Запретить по умолчанию при отправке формы jQuery
что в этом плохого?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
9 ответов:
используйте новый синтаксис события "on".
$(document).ready(function() { $('form').on('submit', function(e){ // validation code here if(!valid) { e.preventDefault(); } }); });цитата:https://api.jquery.com/on/
Я считаю, что приведенные выше ответы все правильно, но это не указывает на то, почему
submitметод не работает.Ну
submitметод не будет работать, если jQuery не могу получитьformэлемент, и jQuery не дает никаких ошибок об этом. Если ваш скрипт помещен в начало документа, убедитесь, что код выполняется послеDOM- это готов. Итак,$(document).ready(function () { // your code here // });решит проблему.лучшие практики всегда ставьте свой скрипт в нижней части документа.
ваш код в порядке, просто вам нужно поместить его в готовую функцию.
$(document).ready( function() { $("#cpa-form").submit(function(e){ e.preventDefault(); }); }
устарел - эта часть устарела, поэтому, пожалуйста, не используйте его.
вы также можете попробовать этот код, если вы, например, позже добавили динамические формы. Например, вы загрузили окно async с ajax и хотите отправить эту форму.
$('#cpa-form').live('submit' ,function(e){ e.preventDefault(); // do something });обновление - вы должны использовать метод jQuery on() и попытаться прослушать документ DOM, если вы хотите обрабатывать динамически добавленные содержание.
Случай 1, статическая версия: если у вас есть только несколько слушателей и формы для обработки жестко, то вы можете слушать непосредственно на уровне "документ". Я бы не использовал слушателей на уровне документа, но я бы попытался углубиться в дерево doom, потому что это может привести к проблемам с производительностью (зависит от размера вашего сайта и вашего контента)
$('form#formToHandle').on('submit'...или
$('form#formToHandle').submit(function(e) { e.preventDefault(); // do something });корпус 2, динамический версия: если вы уже слушаете документ в своем коде, то этот способ был бы хорош для вас. Это также будет работать для кода, который был добавлен позже через DOM или dynamic с AJAX.
$(document).on('submit','form#formToHandle',function(){ // do something like e.preventDefault(); });или
$(document).ready(function() { console.log( "Ready, Document loaded!" ); // all your other code listening to the document to load $("#formToHandle").on("submit", function(){ // do something }) });или
$(function() { // <- this is shorthand version console.log( "Ready, Document loaded!" ); // all your other code listening to the document to load $("#formToHandle").on("submit", function(){ // do something }) });
это древний вопрос, но принятый ответ здесь на самом деле не доходит до корня проблемы.
вы можете решить эту проблему двумя способами. Сначала с помощью jQuery:
$(document).ready( function() { // Wait until document is fully parsed $("#cpa-form").on('submit', function(e){ e.preventDefault(); }); }или без jQuery:
// Gets a reference to the form element var form = document.getElementById('cpa-form'); // Adds a listener for the "submit" event. form.addEventListener('submit', function(e) { e.preventDefault(); });вам не нужно использовать
return falseчтобы решить эту проблему.
Привет искал решение, чтобы сделать форму Ajax работать с менеджером тегов Google (GTM), возврат false предотвратил завершение и отправить активацию события в режиме реального времени на google analytics решение было изменить возврат false по e.preventDefault (); что работает правильно следует код:
$("#Contact-Form").submit(function(e) { e.preventDefault(); ... });
Comments