如果提交失败,使JEditable恢复为显示就地编辑文本区域



我使用JeditablejQuery,它主要是我想要的工作方式。当用户通过jeditable提交一些更改(我使用的是textarea)并且服务器确定存在一些验证错误时,我想自动恢复到显示包含用户最近更改的textarea。这是为了避免他们丢失他们输入的文本(这可能是服务器端错误的结果,或者在他们准备好之前不小心点击了提交按钮)。

是否有任何简单的方法让jeditable重新构建编辑控件?

好,这就是我解决这个问题的方法。我破解了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中的文本提醒用户更改没有提交。

最新更新