Предотвратить отправку формы, если есть ошибки - PullRequest
0 голосов
/ 21 октября 2011

В основном у меня есть код, который показывает пользователю ошибку, если идентификатор, который он написал, уже существует или слишком короткий, но проблема в том, что я не могу понять, как предотвратить отправку формы там, где есть ошибка.

Код, который должен появиться во всплывающем окне с предупреждением:

jQuery("#submit").click(function(e){

           if(error === '1')
           {
     alert("There are some errors in the form.");
     e.preventDefault();
           }
   });   

Затем я получаю ответ, используя AJAX и показывая ошибку:

if(msg == 'OK')
{
var error = '0';
}
else
{
var error = '1';
jQuery("#idCheck_msg").slideDown("fast");
jQuery("#idCheck_text").text(msg).slideDown("fast");
}});
}

Я пыталсясделать что-то с var error, но Firebug говорит, что ошибка не определена, и форма get отправляется даже при наличии ошибки.

Любая помощь?;)

Ответы [ 3 ]

3 голосов
/ 21 октября 2011

Определите error как глобальную переменную.То есть удалите var перед использованием переменной:

var error;
if(msg == 'OK')
{
    error = '0';
}
else
{
    error = '1';
...
1 голос
/ 21 октября 2011

Похоже, что вы устанавливаете значение error после форма отправлена, но проверяет ее значение до форма отправлена.

Данокод в вашем сообщении error будет неопределенным, когда вы попытаетесь проверить его значение.Кроме того, после отправки формы error по-прежнему будет неопределенным, поскольку вы объявляете ее в области действия обработчика ответа AJAX, используя ключевое слово var.

Если вы удалите varКлючевое слово из вашего обработчика AJAX при установке значения error, ваша логика отправки должна работать во второй раз.

Итог: Необходимо установить значение error до Ваша форма отправлена, а не в обработчике ответа AJAX.

0 голосов
/ 21 октября 2011

Когда осуществляется вызов AJAX?Вы не сможете проверить «ошибку», пока не получите успешный ответ от вызова AJAX.Также вам нужно удалить 'var', чтобы он находился в глобальной области видимости.

Если ваш вызов AJAX также выполняется при отправке формы, вам нужно переместить проверку ошибок внутрь кода, который обрабатывает AJAX.ответ.

...