如何使用.ajax使用保存按钮更新表行

时间:2010-06-02 00:32:12

标签: asp.net jquery ajax jtemplate

我有一个有一行的表,只有一个单元格可以编辑。我用以下代码完成了这个。

$("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属性,我可以保存旧值并将其传递给更新函数。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

有两种可能性。

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

如果您想要变量global,请不要使用“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));
 }

现在你可以循环遍历新表测试它的值了解旧表。这个方法根据表的大小来使用大量的内存。