Запретить по умолчанию при отправке формы 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();
});
644   9  

9 ответов:

попробуйте это:

$("#cpa-form").submit(function(e){
    return false;
});

используйте новый синтаксис события "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 // }); решит проблему.

лучшие практики всегда ставьте свой скрипт в нижней части документа.

$('#cpa-form input[name="Next"]').on('click', function(e){
    e.preventDefault();
});
$(document).ready(function(){
    $("#form_id").submit(function(){
        return condition;
    });
});

ваш код в порядке, просто вам нужно поместить его в готовую функцию.

$(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

    Ничего не найдено.