每天学习一点点,成功增加一大步

table中的td可直接单击实现编辑内容

JAVASCRPT zhanghui 2858℃

今天在编写后台的一个功能模块,遇到了在一个表格的数据列表中可实现点击 TD 单元格对单元格中内容进行修改,修改完毕后数据表里面的数据也随着修改。这样就不用再创建新的页面或者是模态框来做简单的数据修改,在一定的程序减少了代码的维护量。但要实现这个需求就涉及到 TD 的点击和编辑后的 AJAX 异步提交两个事件。

下面是实现这个需求的代码

HTML代码部分:

 <td class="release_people_name" data-number="<{$item[number]}>"><{$item[people_name]}></td>

JQUERY代码部分:

var $newNode=$("<input type='text' id='release_people_name_input' style='width:150px;' maxlength='20' onclick='doSomething(this,event)'>");
var $oldTdObj="";   //用于保存TD对象
$(function(){
    $(".release_people_name").click(function(){
        var id = $(this).data('number');
        //获取当前TD的值
        var $oldValue=$(this).text();
        console.log('$oldValue');
        console.log($oldValue);
        //是否存在input
        var $ifInput=$(this).children().is('input');
        if($oldTdObj!=""){
            var newValue=$("#release_people_name_input").val();
            console.log('newValue');
            console.log(newValue);
            if(typeof(newValue)!="undefined"){
                setPeopleName(id, newValue);
                $oldTdObj.text(newValue);
            }
        }
        <!--如果TD单元格中不存在input,则添加-->
        if(!$ifInput){
            $(this).text('');
            $oldTdObj=$(this);
            $(this).append($newNode);
            $newNode.val($oldValue);
            $newNode.focus();
        }
    });
});
<!--验证是否为正整数-->
function setPeopleName(id, name){
    $.post('POST的服务端接收地址',{people_name:name,number:id},function (result) {
        result = $.parseJSON(result);
        $.pkAlert(result.msg);
    });
}
<!--js阻止冒泡事件-->
function doSomething(obj,evt){
    var e=(evt)?evt:window.event;
    if(window.event){
        e.cancelBubble=true;
    }else{
        e.stopPropagation();
    }
}

转载请注明:隨習筆記 » table中的td可直接单击实现编辑内容

喜欢 (12)