Я пытаюсь проверить, проверены ли все элементы (переключатели). Следующий код работает, но как только я нажимаю на окно предупреждения, он снова появляется. Использование event.stopPropagation()
ничего не меняет. Он не ждет, пока пользователь проверит остальные предметы.
$(document).ready(function(){
$(document).on('submit','#formular',function(event){
$("input:radio").each(function() {
var val = $('input:radio[name=' + this.name + ']:checked').val();
if (val === undefined) {
alert("Not every item answered");
event.preventDefault();
}
});
});
});
Вы не preventDefault
из цикла, используя preventDefault
, обычно вы должны использовать break
или continue
, но в jQuery $.each
вы должны использовать return true
для продолжения и return false
эквивалент break
.
$(document).ready(function(){
$(document).on('submit','#formular',function(event){
$("input:radio").each(function() {
var val = $('input:radio[name=' + this.name + ']:checked').val();
if (val === undefined) {
alert("Not every item answered");
return false;
}
});
// When invalid formular:
return false;
// When it valid:
return true;
});
});
См. Также этот вопрос: проверка jquery: предотвратить форму submit
Видеть:
Как вырваться из jQuery каждый цикл
return = false;
вместо этого он сразу загружает следующую страницу.