Jeditable Async会在出错时恢复

mad*_*kay 4 jquery jeditable

我一直在使用JQuery的JEditable插件,我想将错误返回给插件,指示它恢复到以前的值,并向用户显示错误.我有这个工作使用同步ajax调用,但我宁愿使用异步回调.我到底的代码如下.

$("#editbox").editable(submitEdit, { 
     indicator : "Saving...",
     tooltip   : "Click to edit...",
     name : "Editable.EmailAddress",
     id   : "elementid",
     type : "text",
     submit  : "<span class=\"mini_button\">Ok</span>",
     cssclass : "edit_text"
});
function submitEdit(value, settings)
{ 
     var edits = new Object();
     var origvalue = this.revert;
     var textbox = this;
     edits[settings.name] = [value];
     var returned = $.ajax({
                        url: "http://someurl.com/edit/", 
                        type: "POST",
                        /*async: false,*/
                        data : edits,
                        dataType : "json",
                        complete : function (XMLHttpRequest, textStatus) 
                                   {
                                       alert("Setting back to original value " +origvalue);
                                       $(textbox).html(origvalue);
                                   }
                     });

      /*var response = $.secureEvalJSON(returned.responseText);
      if (response.errorMsg != '')
      {    
          $("#ajaxNotify").addClass("ajax_error").html(response.errorMsg); 
          return(this.revert);                     
      }*/
      return(value);
 }
Run Code Online (Sandbox Code Playgroud)

我还在评论中包含了我的同步实现,效果很好.在高服务器负载情况下,这将锁定浏览器,直到编辑在后端完成.相反,如果编辑失败,则返回该值并在以后将其还原.

谢谢,

编辑

试图抖动建议,并得到它在IE8的工作之后,我意识到这个问题是与FF和铬当我点击按钮.如果我单击该字段,编辑然后按回车一切都很好.回调触发,值重置.

如果我单击该字段,编辑然后单击确定按钮并且不接收和验证错误,则表单保持活动状态并且就在那里.如果收到该部分执行的错误,则文本值将恢复为原始值,但是我无法再次单击该字段,jeditable似乎已解除​​绑定.

我可以确认帖子和回复是在萤火虫中收到的,所以ajax正在开火.

{ "ERRORMSG": ""}

如果我按Enter键,为什么这在所有浏览器中都能完美运行,但如果单击确定按钮则不然?相同的代码以任一方式执行,按钮肯定正确地提交表单.

解除绑定的事情也只有按下按钮才会发生.

有没有人有任何使用jeditable和处理服务器端验证问题的例子?

jit*_*ter 5

这根本不起作用?

...
complete : function (xhr, textStatus) {
  $.secureEvalJSON(xhr.responseText);
  if (response.errorMsg != '') {
    $("#ajaxNotify").addClass("ajax_error").html(response.errorMsg);
    alert("Setting back to original value " +origvalue);
    $(textbox).html(origvalue);
  }
}
...
Run Code Online (Sandbox Code Playgroud)