我使用Jeditable
与jQuery
,它主要是我想要的工作方式。当用户通过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
中的文本提醒用户更改没有提交。