0

行が1つあるテーブルがあり、編集できるセルは1つだけです。私は次のコードでこれを達成しました。

$("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プロパティを使用していないためです。

4

2 に答える 2

0

元の値を変数のどこかに格納し、.ajax呼び出しを送信する前に送信関数で2つを比較します。

于 2010-06-02T00:40:56.113 に答える
0

2つの可能性があります。

  • 関数間で変数を渡します
  • 変数をグローバルにする

変数globalが必要な場合は、「var」キーワードを使用しないでください

変化する:

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

これに:

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

編集

ページが更新される前にクリック機能が2回以上ヒットし、元のテーブル行のコピーを保持したい場合は、これを試すことができます。元のテーブルのコピーを変数に保存すると、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));
 }

これで、新しいテーブルをループして、古いテーブルに対してその値をテストできます。この方法では、テーブルの大きさに応じて大量のメモリを使用します。

于 2010-06-02T01:59:55.540 に答える