2011-01-29 5 views
8

フィールドがjeditableによって更新されています。私は値が減少している場合(データが失われる結果になる)、アップデートが送信される前に警告メッセージを出力したいが、増加している場合は警告メッセージを出力しない。jeditableで送信する前に古い値と新しい値にアクセスする方法

これはjeditableのonsubmit関数にとっては良い候補に思えますが、これは私がうまく起動できます。私は$( 'input'、this)).val()から新しい値を得ることができますが、このコンテキストでそれを比較する元の値をどうやって得るのですか?

...

上記の説明/質問を投稿以来、私は種類の溶液を作ってみました。

$('#foo').hover(function(){ 
    var old_value = $(this).text(); 
    $(this).editable('ajax.php', { 
    submitdata {'old_value':old_value} 
    }); 
}); 

$('#foo').editable(...); 

からjquery.readyでinvokationを変更することにより、私はをonSubmitメソッドでsettings.submitdata.old_valueを使用することができます。

しかし、確かに良い方法が必要ですか? jeditableは元の値を元に戻して元に戻すことができなければなりません。ですから、問題はどのように私はonsubmit関数からそれにアクセスできますか?

事前に感謝の意を表します。ここで

答えて

8

は、(それがsubmitEdit機能を使用している)私の編集可能です:編集

function submitEdit(value, settings) { 
     var edits = new Object(); 
     var origvalue = this.revert; 
     var textbox = this; 
     var result = value; 

     // sb experiment 
     var form = $(this).parents('form:first'); 
     // end experiment 

     edits["field"] = form.find('input[name="field"]').val(); 
     edits["value"] = value; 
     var returned = $.ajax({ 
      url: '@Url.Action("AjaxUpdate")', 
      type: "POST", 
      data: edits, 
      dataType: "json", 
      complete: function (xhr, textStatus) { 
       // sever returned error? 
       // ajax failed? 
       if (textStatus != "success") { 
        $(textbox).html(origvalue); 
        alert('Request failed'); 
        return; 
       } 

       var obj = jQuery.parseJSON(xhr.responseText); 
       if (obj != null && obj.responseText != null) { 
        alert(obj.responseText); 
        $(textbox).html(origvalue); 
       } 
      } 
     }); 
     return (result); 
    } 
11

がはるかに簡単に解決策がするだろう前にsubmitEdit origvalue

$(function() { 
     $('.editable').editable(submitEdit, { 
      indicator: '<img src="content/images/busy.gif">', 
      tooltip: '@Html.Resource("Strings,edit")', 
      cancel: '@Html.Resource("Strings,cancel")', 
      submit: '@Html.Resource("Strings,ok")', 
      event: 'edit' 
     }); 
     /* Find and trigger "edit" event on correct Jeditable instance. */ 
     $(".edit_trigger").bind("click", function() { 
      $(this).parent().prev().trigger("edit"); 
     }); 
    }); 

は元の値でありますこの行をsubmitdata変数に追加してください

"submitdata": function (value, settings) { 
     return { 
      "origValue": this.revert 
     }; 
} 
関連する問題