我是 jQuery 队列的新手,所以我可以在这里使用一些帮助。很难为这种情况建立一个演示页面,所以我希望你能根据我的描述来跟进。
我正在将内联编辑编码到我的照片社区网站中。用户可以单击图像的标题或描述,然后开始输入。当他们退出该字段或点击 [enter] 时,他们的值将被保存。为此,我使用了jEditable插件,非常棒。
关于问题。它涉及错误处理。如果值无效,验证输入的后端脚本可能会返回错误,然后我将在 jEditable 的错误处理程序中捕获此错误。这样的错误可能是“标题不能为空”。
我想做的是用错误文本覆盖标题字段。接下来,3 秒后错误文本将消失,并显示编辑前的原始值。我实际上使用以下代码进行了这项工作。请注意,我只显示相关部分:
onerror: function(settings, original, xhr) {
console.log('error');
// set error text
$("#" + original.id).html('<span class=\"error\">' + xhr.responseText + </span>').delay(3000).queue(function() {
original.reset();
});
}
如您所见,原始值的重置延迟了 3 秒,而错误文本可见。这工作正常,但只是第一次。如果我再次编辑重置的标题并再次强制输入无效值,则会出现错误文本,但似乎从未调用过重置。通过日志记录,我确认第二次调用了错误处理程序,而不是重置代码。为什么不?