2013-06-14 3 views
1

У меня есть форма, и у меня есть кнопка «отменить» и отправить. когда пользователь отправляет форму, если обязательные поля не заполняются, я хочу предупредить («ошибка») и остановить форму для отправки.Прерывание отправки, если форма не подтверждена

вот мой простой код jquery, но когда пользователь нажимает кнопку ok в окне предупреждения, он продолжает отправлять.

<script> 
$(document).ready(function() { 
    $('#<%=btn_reddet.ClientID %>').click(function (event) { 
     alert("Error!"); 
     event.preventDefault(); 
    }); 
}); 
</script> 

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

+0

У вас есть ответ, хотя я бы предложил использовать встроенные валидаторы .net. Они позволяют упростить проверку на стороне клиента и сервера. Это всегда должно быть реализовано. – Smeegs

ответ

1

вместо .click, вы можете использовать .submit, Вам просто нужно вернуться, чтобы остановить ложные формы представления

$('#formID').on('submit',function (event) { 
     alert("Error!"); 
     return false; 
}); 
1

Используйте $('form').submit() событие вместо $('submit_button').click(). Тогда return false если проверка не пройдена:

$(document).on('submit','form',function(e) { 
    var validated = true; 
    // some validation code which sets 'validated = false' if it fails 
    return validated; 
}); 
+0

Почему 'preventDefault' отличается от' return false' в этом случае? – nmat

+0

В этом случае я могу просто «возвратить проверенные» и пропустить тестирование, является ли «validated» истинным или ложным. – Blazemonger

+0

Да, я это понял. Но почему это срабатывает, если 'event.preventDefault()' нет? – nmat

0

Если вы хотите использовать

event.preventDefault(); 

Тогда я считаю, что также должно сопровождаться

event.stopPropagation(); 

В противном случае вы можете просто использовать вернуться ложным.

+0

Не в этом случае. – Blazemonger

+0

Зачем нужна 'stopPropagation()' help? – nnnnnn

+0

О нет e.preventDefault() предотвращает событие по умолчанию и e.stopPropagation() предотвращает появление пузырьков в дереве DOM, а return false эффективно делает оба? –

0

event.preventDefault() и return false не работают одинаково, различия существуют, когда что-то пойдет не так (read: error) и независимо от того, выполнено или нет событие.preventDefault() или нет, вот пример когда это имеет значение и почему возвращение false не всегда срабатывает:

$('a').click(function(e){ 
    $(this).css("background", "green"); 
    err(); // err is not defined, so JavaScript will throw error, and the browser will ignore rest of the code (return false;). The browser will perform the default action. 
    return false; 
}); 
$('a').click(function(e){ 
    e.preventDefault(); 
    $(this).css("background", "green"); 
    err(); // err is not defined, so JavaScript will throw error, and the browser will ignore rest of the code. We already called event.preventDefault() so the browser will not perform default action. 
}); 
Смежные вопросы