我想这被设置,以便被点击文本的某些身体时,文本输入字段弹出,并且用户可以将数据输入到字段中,然后单击一个“保存”或“取消”按钮后把它发送到数据库或重置价值,分别。然而,尽管“返回false”的用法,我似乎无法把这个代码重复激活。

我已经使用过的()和这样的作品,但我也希望能够保存两种或取消用户后重新实例原始点击事件,不能想办法,使这项工作。预先感谢您的帮助。

$('td[name]').live("click", function() {
    nameof = $(this).attr("name");
    idof = $(this).attr("id");
    valueof = $(this).html();

    $(this).html('<input type="text" name="' + nameof + '" value="' + valueof + '"><input type="hidden" name="id" value="' + idof + '"><span id="save">save</span> &nbsp <span id="cancel">cancel</span>');

    return false;   
});

更新

下面是我终于想出了(包括所有编辑就地代码):

$('td[name="grouping"] span, td[name="title"] span').live('click', function() {         
    nameof = $(this).parent().attr("name");
    idof = $(this).parent().attr("id");
    valueof = $(this).html();

    if($("table td>span").children('input').length > 0) {} 
    else {
        if($(this).children().length > 0) {} 
        else {
            $(this).html('<input type="text" name="' + nameof + '" value="' + valueof + '"><input type="hidden" name="id" value="' + idof + '"><input type="hidden" name="originalinput" value="' + valueof + '"><span class="save">save</span> &nbsp; <span class="cancel">cancel</span>');
        }
    }

});

$('.cancel').live('click', function() {         
    $(this).parent().html($(this).siblings('input[name="originalinput"]').attr("value"));
});

$('.save').live('click', function() {

    savevalue = $(this).siblings('input[type="text"]').attr("value");
    saveid = $(this).siblings('input[name="id"]').attr("value");
    savecolumn = $(this).siblings('input[type="text"]').attr("name");

    $.ajax({
       type: "POST",
       url: "../php/adminajax.php",
       data: 'id=' + saveid + '&' + savecolumn + '=' + savevalue
    });

    $(this).parent().html(savevalue);
});

$('#saving').ajaxStart( function() {
    $(this).fadeIn(100);
});

$('#saving').ajaxStop( function() {
    $(this).fadeOut(2000);
});

我敢肯定,这多少混乱比任何我可能已经下载了,但至少我知道的AJAX编辑就地现在的基础知识。感谢您的帮助,所有的。

有帮助吗?

解决方案

它看起来像你基本上试图做一个编辑就地处理。您正在运行到的问题是,用户的点击正在通过文本框传播/跨越回到它的父容器,从而再次引发Click事件。你需要对其进行过滤,因此它不选择TD的有内输入它的内容。沿着此线的东西:

$('td[name]:not(td>input)').live(...);

虽然没有直接回答你在找什么,为什么不使用现有的插件,像一个的此处发现?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top