Как не отправлять форму, если проверка является ложной

StackOverflow https://stackoverflow.com/questions/665470

  •  21-08-2019
  •  | 
  •  

Вопрос

Как я могу убедиться, что форма не будет отправлена, если одна из проверок является ложной?

$('#form').submit(function(){
    validateForm1();
    validateForm(document.forms['dpart2']);
    validateForm(document.forms['dpart3']);                     
}); 
Это было полезно?

Решение

Если функция возвращает false, форма не будет отправлена.

$('#form').submit(function(){
    return  validateForm1() 
            && validateForm(document.forms['dpart2']) 
            && validateForm(document.forms['dpart3']);                                         
              }
});

Другие советы

$('#form').submit(function(){
    return (validateForm1() &&
            validateForm(document.forms['dpart2']) &&
            validateForm(document.forms['dpart3']))
});

По сути, вы возвращаете false в функции обработчика событий.

Хорошо, некоторые из других решений будут иметь ленивый сбой...вероятно, вы хотите, чтобы вся ваша проверка выполнялась, чтобы отображались все ошибки.Предполагается, что ваши методы проверки вернут false, если они завершатся неудачей.

$("#myform").submit(function() {

    var ret = true;
    ret = validateForm1() && ret;
    ret = validateForm(document.forms['dpart2']) && ret
    ret = validateForm(document.forms['dpart3'])) && ret
    return ret;

});

Таким образом, будут вызваны все ваши валидаторы, но логическое значение для любого сбоя приведет к сбою.

Если validateForm(...) и validateForm1() возвращают логическое значение (true означает, что ошибки проверки не произошло), то вы пытаетесь это сделать :

$('#form').submit(function(){
    if (!validateForm1() || !validateForm(document.forms['dpart2']) || !validateForm(document.forms['dpart3'])) {
        return false;
    }
});

Мысль , которая возникает автоматически:Даже если вы внедрили тщательную проверку на стороне клиента, будьте готовы к получению любых неверных данных запроса на сервере, которые вы только можете себе представить.

Проверка на стороне клиента никогда не удерживает вас от проверки на стороне сервера.Это просто бонус в юзабилити.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top