在jEditable中发出了解jQuery队列以延迟效果的问题

时间:2011-01-17 20:40:39

标签: jquery queue jeditable

我是jQuery队列的新手,所以我可以在这里使用一些帮助。很难为这种情况设置一个演示页面,所以我希望你可以根据我的描述进行操作。

我正在编辑内联编辑到我的照片社区网站。用户可以单击图像的标题或描述,然后开始输入。当他们退出该字段或点击[输入]时,他们的值将被保存。为此我使用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秒,同时显示错误文本。这工作正常,但只是第一次。如果我再次编辑重置的标题并再次强制输入无效值,则会显示错误文本,但似乎永远不会调用重置。通过日志记录,我已经确认错误处理程序是第二次调用,而不是重置代码。 为什么不呢?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:事实证明我需要在调用后将重置队列出队:

original.reset();
$(this).dequeue();

现在工作正常!