JQuery дистанционная проверка состояния гонки - PullRequest
0 голосов
/ 02 октября 2009

У меня проблема с плагином jQuery validate и правилом удаленной проверки, используемым в сочетании с плагином jQuery form.

Поэтому я использую плагин формы jQuery для перехвата, чтобы сформировать субмиссию, и если проверка не пройдена, форма не отправляется. Однако, если удаленное правило уже проверяется (ожидает ответа от сервера), форма будет отправлена ​​в любом случае.

Если это до или после, все работает нормально, как и другие правила, которые у меня есть для формы. Но если я в середине GET для удаленного правила, то $ ('# myform'). Validate.form () вернет true, и форма будет отправлена.

Итак, код выглядит так:

$('#myform').ajaxForm({
   beforeSubmit: processRequest,
   success: processResponse,
   dataType: 'json'
 });

$('#myform').validate({
   rules: {
       onkeyup: false,
       title: { 
           required: true,
           remote: { url: 'check_title.php' }
       }
   }
});

function processRequest(formData, jqForm, options) {
    if (!$('#myform').validate.form()) {
        // cancel the form submition
        return false;
   }
   // do some stuff
   return true;
}

Есть ли способ заставить ждать ожидающую удаленную проверку?

Или, может быть, я мог бы оставить только «onsubmit: true» в правилах валидации, поэтому я был бы уверен, что валидация происходит только во время отправки и ждет завершения, прежде чем вернуть значение для validate (). Form (), но что мое последнее средство.

1 Ответ

1 голос
/ 02 октября 2009

Я думаю, вы поняли это правильно, думая, что вы должны заставить удаленную проверку ждать, потому что это звучит как состояние гонки

Согласно документации ajaxForm вы можете передать стандартные параметры $ .ajax

Итак, вы можете попробовать передать async: false в ajaxForm. Это приведет к блокировке удаленных вызовов (синхронно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...