如果提交失败,使JEditable恢复显示编辑就地textarea?

时间:2011-12-05 17:20:08

标签: jquery jeditable

我正在Jeditable使用jQuery,而且我的工作方式大部分都是我想要的。当用户通过jeditable(我使用textarea)提交一些更改并且服务器确定存在一些验证错误时,我想自动恢复为显示包含该textarea的{​​{1}}用户最近的更改。这是为了避免他们丢失他们输入的文本(这可能是服务器端错误或在准备好之前意外点击提交按钮的结果)。

有没有简单的方法让jeditable重新构建编辑控件?

1 个答案:

答案 0 :(得分:0)

好的,所以我在这里解决了这个问题。我攻击了jeditable.js,因此它希望JSON数据作为在提交就地编辑时触发的AJAX success回调中的响应。在JSON对象中是alert字段,我将其用作

var ajaxoptions = {
  type    : 'POST',
  data    : submitdata,
  dataType: 'text',
  accepts: 'json',
  url     : settings.target,
  success : function(result, status) {
      data = $.parseJSON(result);
      $(self).children('span.indicator').remove();
      if(!data.alert) {
        $(self).html(data.text);
        self.editing = false;
        callback.apply(self, [data, settings]);
        if (!$.trim($(self).html())) {
            $(self).html(settings.placeholder);
        }
      }
      else {
        callback.apply(self, [data, settings]);
      }
  },
  error   : function(xhr, status, error) {
      $(self).children('span.indicator').remove();
      onerror.apply(form, [settings, self, xhr]);
  }

};

因此,实质上,如果存在非NULL警报字符串,我只是不做任何事情(除了触发callback函数,如果已定义)。这似乎工作正常,留下textarea字段,用户的内部更改。我的回调通过使用data.alert中的文字提醒用户未提交更改。