jquery 配合 ajax 完成 在线编辑 你值得拥有

思路分析:

将 table中的表格 改变成为 input表格框获得值 ajax配合修改 删除

<?php
use yii\helpers\Url;

$web = Url::base();
?>
<style>
    .btn-save-data {
        display: none;
    }

    .btn-cancel-data {
        display: none;
    }
</style>
<script type="text/javascript">

    //添加 页面  尾部追加 td input 框跟值
    $("#onAddBaseDataCategory").click(function () {

        var trtd = $(‘<tr>‘ +
            "<td class=‘code_one‘><input name=‘code‘ type=‘text‘ value=‘‘></td>" +
            "<td class=‘name_one‘><input name=‘name‘ type=‘text‘ value=‘‘></td>" +
            "<td class=‘tag_one‘><input name=‘tag‘ type=‘text‘ value=‘‘></td>" +
            "<td class=‘table-text-align-left‘>" +
            "<a href=javascript:void(0) onclick=‘onSaveBaseDataCategory(this)‘ data-id= ‘‘ class=‘btn btn-link‘>保存</a>" +
            "<a href=javascript:void(0) onclick=‘cancelBaseDataCategory(this)‘ data-id= ‘‘ class=‘btn btn-link‘>取消</a>" +
            "</td>" +
            "</tr>");
        trtd.prependTo("#baseDataCategoryTable");

    });

    //编辑页面
    function onEditData(obj) {

        var id = $(obj).attr(‘data-id‘);
        var object = $(obj).parent().parent();

        object.find(‘.btn-edit-data‘).hide();
        object.find(‘.btn-delete-data‘).hide();
        object.find(‘.btn-save-data‘).show();
        object.find(‘.btn-cancel-data‘).show();

        var code = object.find(".code_one").text();
        var name = object.find(".name_one").text();
        var tag = object.find(".tag_one").text();

        object.find(".code_one").html("<input data-base-title=‘" + code + "‘ name=‘code‘ type=‘text‘ value=‘" + code + "‘>");
        object.find(".name_one").html("<input data-base-title=‘" + name + "‘ name=‘name‘ type=‘text‘ value=‘" + name + "‘>");
        object.find(".tag_one").html("<input data-base-title=‘" + tag + "‘ name=‘tag‘ type=‘text‘ value=‘" + tag + "‘>");

    }

    // 数据保存
    function onSaveBaseDataCategory(obj) {

        var object = $(obj).parent().parent();
        object.find(‘.btn-save-data‘).show();
        var id = $(obj).attr(‘data-id‘);
        var is_enabled = 1;

        var data = {};
        var code = object.find(‘input[name="code"]‘).val();
        var name = object.find(‘input[name="name"]‘).val();
        var tag = object.find(‘input[name="tag"]‘).val();

        if (id == ‘‘) {
            id = null;
        }

        data.code = code;
        data.name = name;
        data.tag = tag;
        data.is_enabled = is_enabled;
        data.id = id;

        requestJson("base-data-category-save-handler", data, true, function (response) {
            if (response.status == 0) {
                id = response.data.id;  //ajax  添加|修改  成功后 读取数据库的id
                replace(object, id, code, name, tag);
            } else {
                errorDialog(response.message);
            }
        });

    }

    //取消
    function cancelBaseDataCategory(obj) {

        var object = $(obj).parent().parent();
        var id = $(obj).attr(‘data-id‘);

        if (id == ‘‘) {
            object.remove();
            return;
        }

        var code = object.find(‘input[name="code"]‘).attr(‘data-base-title‘);
        var name = object.find(‘input[name="name"]‘).attr(‘data-base-title‘);
        var tag = object.find(‘input[name="tag"]‘).attr(‘data-base-title‘);

//        //替换
        object.find(‘.code_one‘).html("<td class=‘code_one‘>" + code + "</td>");
        object.find(‘.name_one‘).html("<td class=‘name_one‘>" + name + "</td>");
        object.find(‘.tag_one‘).html("<td class=‘tag_one‘>" + tag + "</td>");

        object.find(‘.btn-edit-data‘).show();
        object.find(‘.btn-delete-data‘).show();
        object.find(‘.btn-save-data‘).hide();
        object.find(‘.btn-cancel-data‘).hide();
    }

    //input 框 替换 表格
    function replace(object, id, code, name, tag) {
        var tr = ‘<tr>‘ +
            "<td class=‘code_one‘>" + code + "</td>" +
            "<td class=‘name_one‘>" + name + "</td>" +
            "<td class=‘tag_one‘>" + tag + "</td>" +
            "<td class=‘table-text-align-left‘>" +
            "<a href=javascript:void(0) onclick=‘onEditData(this)‘ data-id=‘" + id + "‘ " +
            "class=‘btn btn-link btn-edit-data‘>编辑</a>" +

            "<a href=javascript:void(0) onclick=‘deleteBaseDataCategory(this)‘ data-id=‘" + id + "‘" +
            "class=‘btn btn-link btn-delete-data‘>删除</a>" +

            "<a href=javascript:void(0) onclick=‘onSaveBaseDataCategory(this)‘ data-id=‘" + id + "‘" +
            "class=‘btn btn-link btn-save-data‘>保存</a>" +

            "<a href=javascript:void(0) onclick=‘cancelBaseDataCategory(this)‘ data-id=‘" + id + "‘" +
            " class=‘btn btn-link btn-cancel-data‘>取消</a>" +
            "</td>" +
            "</tr>";
        object.replaceWith(tr);
        return true;
    }

    //删除基础分类
    function deleteBaseDataCategory(obj) {
        var object = $(obj).parent().parent();
        var id = $(obj).attr(‘data-id‘);var data = {};
            data.id = id;
            requestJson(‘base-data-category-delete-handler‘, data, true, function (response) {
                if (response.status == 0) {
                    object.remove();
                } else {
                    errorDialog(response.message); //这是错误提示 自己封装的
                }
            })

    }

</script>
<div class="form-horizontal" id="base_data_category_submit_form">
    <div class="panel panel-frame panel-operat">
        <div class="panel-body">
            <div class="panel-content">
                <a type="button" class="btn btn-primary putaway-icon ">
                    <div class="btn-icon"></div>
                    <div id="onAddBaseDataCategory" class="btn-text">添加</div>
                </a>
            </div>
        </div>
    </div>

    <div class="panel panel-frame">
        <div class="table-responsive">
            <table class="table table-bordered table-hover" id="baseDataCategoryTable">
                <thead>
                <tr id="th">
                    <th>编码</th>
                    <th>名称</th>
                    <th>标签</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <?php
                foreach ($items as $item) {
                    ?>
                    <tr>
                        <td class=‘code_one‘><?= $item[‘code‘] ?></td>
                        <td class=‘name_one‘><?= $item[‘name‘] ?></td>
                        <td class=‘tag_one‘><?= $item[‘tag‘] ?></td>
                        <td class=‘table-text-align-left‘>
                            <a href="javascript:void(0);" onclick="onEditData(this)" data-id="<?= $item[‘id‘] ?>"
                               class=‘btn btn-link btn-edit-data‘>编辑</a>
                            <a href="javascript:void(0);" onclick="deleteBaseDataCategory(this)"
                               data-id="<?= $item[‘id‘] ?>"
                               class=‘btn btn-link btn-delete-data‘>删除</a>
                            <a href="javascript:void(0);" onclick="onSaveBaseDataCategory(this)"
                               data-id="<?= $item[‘id‘] ?>"
                               class=‘btn btn-link btn-save-data‘>保存</a>
                            <a href=javascript:void(0) onclick=‘cancelBaseDataCategory(this)‘
                               data-id="<?= $item[‘id‘] ?>"
                               class=‘btn btn-link btn-cancel-data‘>取消</a>
                        </td>
                    </tr>
                    <?php
                }
                ?>
                </tbody>
            </table>
        </div>
        <div class="table-pagination">
        </div>
    </div>
</div>

ps: requestJson 是我自己封装的ajax请求 : 配合 yii框架使用的 我给大家分享一下

/**
 * ajax获取json数据
 * @param url
 * @param data
 * @param async
 * @param successFun
 * @param errorFun
 * @returns {{}}
 */
requestJson = function (url, data, async, successFun, errorFun) {
    if (!(typeof loading === ‘undefined‘)) {
        loading.show();
    }

    var responseData = {};
    responseData.status = -100;
    responseData.message = ‘网络不给力!‘;
    responseData.data = null;

    // data._csrf = $(‘meta[name="csrf-token"]‘).attr("content");

    $.ajax({
        async: async || false,
        type: "POST",
        url: url,
        data: data,
        dataType: "json",
        success: function (data) {
            responseData = data;

            if (successFun) {
                successFun(data);
            }

            if (!(typeof loading === ‘undefined‘)) {
                loading.hide();
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            if (!(typeof loading === ‘undefined‘)) {
                loading.hide();
            }

            responseData.status = -101;
            responseData.message = XMLHttpRequest.responseText;

            // errorMessage(responseData.message);

            if (errorFun) {
                errorFun(responseData);
            }
        }
    });

    return responseData;
};
时间: 2024-08-11 05:46:22

jquery 配合 ajax 完成 在线编辑 你值得拥有的相关文章

JQuery结合Ajax实现双击Table表格,使Table变成可编辑,并保存到数据库中

近期在做项目时,要实现通过双击Table表格的TR,使Table行变成可编辑,来实现修改数据并保存到数据库中的功能,无需多说,直接贴代码吧.希望能得到各位同仁指正. 1 function tdEdit(element, id) { 2 var i_a = "<input class='edit_td' type='text' style='height:30px; width:40px;' value='"; 3 var i_b = "'/>"; 4 v

JQUERY和AJAX学习

1.ADO.net中加一段神奇的代码: string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\")||dataDir.EndsWith(@"\bin\Release\")) { dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.

JQuery中$.ajax()方法参数详解

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

jQuery中$.ajax()详解(转)

JQuery中$.ajax()方法参数详解     url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有

触碰jQuery:AJAX异步详解

触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和XHTML来表示. 2)   使用DOM模型来交互和动态显示. 3)   使用XMLHttpRequest来和服务器进行异步通信. 4)   使用javascript来绑定和调用.

关于Jquery中ajax介绍

jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性. 回调函数 在我们使用的时候,如果要处理$.ajax()得到的数据,则需要使用回调函数. beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数. error 在请求出错时调用.传入XMLHttpRequest对象,描述错误

jQuery笔记(六)jQuery之Ajax

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. url (String) :

jQuery中ajax的使用与缓存问题的解决方法

jQuery中ajax的使用与缓存问题的解决方法 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个

JQuery中$.ajax()方法参数

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项