Проблема понимания очередей jQuery для отсроченного эффекта в jEditable - PullRequest
0 голосов
/ 17 января 2011

Я новичок в очередях jQuery, поэтому могу использовать некоторую помощь здесь.Сложно создать демонстрационную страницу для этой ситуации, поэтому я надеюсь, что вы можете следовать на основании моего описания.

Я кодирую inline-редактирование на своем сайте сообщества фотографий.Пользователи могут щелкнуть заголовок или описание изображения и просто начать печатать.Когда они выходят из поля или нажимают [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 секунды, пока текст ошибки отображается.Это работает нормально, но только в первый раз.Если я еще раз отредактирую сброшенный заголовок и снова принудительно введу неверное значение, появится текст ошибки, но кажется, что сброс никогда не вызывается.Через логирование я подтвердил, что обработчик ошибок вызывается второй раз, но не код сброса. Почему бы и нет?

1 Ответ

0 голосов
/ 18 января 2011

Отвечая на мой собственный вопрос: Оказывается, мне нужно сбросить сброс после вызова:

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

Отлично работает сейчас!

...