【问题标题】:How to update a table row with save button using .ajax如何使用 .ajax 使用保存按钮更新表格行
【发布时间】:2010-06-02 00:32:11
【问题描述】:

我有一个表格,它只有一行,只有一个单元格是可编辑的。我已经用下面的代码完成了。

$("td#effEndDate").click(function() {
            if (!$(this).hasClass("edit")) {
                var value = jQuery.trim($(this).html());
                $(this).html("<input id=\"txtEdit\" type=\"text\" value=\"" + value + "\" />");
                $(this).addClass("edit");
                $("#txtEdit").focus();
            }
        });

现在这是我卡住的部分。

字段更新后,必须单击保存按钮以调用正确的 .ajax 方法来更新数据库。但是如何将之前的值与按下按钮时的当前值进行比较?因为我没有使用 onblur 属性,我可以保存旧值并将其传递给更新函数。

【问题讨论】:

    标签: asp.net jquery ajax jtemplate


    【解决方案1】:

    有两种可能。

    • 在函数之间传递变量
    • 使变量全局化

    如果您想要全局变量,请不要使用“var”关键字

    变化:

    var value = jQuery.trim($(this).html()); 
    

    到这里:

    value = jQuery.trim($(this).html()); 
    

    编辑

    如果单击功能在页面刷新之前被多次点击,并且假设您想要保留原始表格行的副本,您可以尝试这样做。将原始表的副本保存在变量中,然后您可以使用 ID 号查询原始表的 html。这是一个快速模拟

    在页面加载时首先将表格存储在一个变量中。这将保存表格的原始副本

     //get a copy of the table
     var GetCopyofOriginalTable = function() {
          var TableToBeCopied = $('the appropriate selector');
          CopyOfTable = JQuery.extend(true, {}, TableToBeCopied);  //Notice no var, its global
     }
    
     //Now store the variale
     GetCopyofOriginalTable();
    
     var FindTableRowByID = function(trID) {
          return $('table:has(tr#' + trID));
     }
    

    现在您可以循环遍历新表,并针对旧表测试其值。这种方法会根据表的大小使用大量内存。

    【讨论】:

    • 谢谢,确实有效。但是,如果我想让多个单元格可编辑,则 .click 函数将被多次调用,从而消除先前的值。有没有办法保存整个 并将其存储到对象或其他东西中,然后将其与新值进行比较?
    【解决方案2】:

    我会将原始值存储在变量中的某个位置,并在发送.ajax 调用之前在提交函数中比较两者。

    【讨论】:

    • 感谢您的快速回复。原始值已保存在代码的第三行中。 var value = jQuery.trim($(this).html());但是这个值对其他函数是不可见的。如何保存该值以便其他函数可以看到它?
    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多