2016-01-29 4 views
2

Я знаю, как это работает, я сделал это тысячу раз. Тем не менее, сейчас это не работает. ЗАЧЕМ?jQuery on form submit Обновление страницы

У меня есть следующий код. Я пробовал e.preventDefault, e.stopPropagation, return false. Я изменил html для формы до <form onsubmit="function()" и так далее. Тем не менее, каждый раз, когда я отправляю форму, страница обновляется.

Может ли кто-нибудь, кто может сказать мне, насколько я пьян, и что я делаю неправильно?

jQuery(document).ready(function(){ 
    jQuery('.register-form').submit(function(e){  
     var form = jQuery(this).serialize();   
     jQuery.ajax({ 
      type : "post", 
      dataType : "json", 
      url : myAjax.ajaxurl, 
      data : form, 
      success : function(d){ 
       if(d.success) { 
        alert('Takk for din påmelding'); 
       } else { 
        alert('Noe gikk galt, vennligst prøv igjen senere'); 
       } 
      }, 
      error: function(){ 
       alert('Noe gikk galt, vennligst prøv igjen senere'); 
      } 
     });  
     return false; 
    }); 
}); 

Для тех, кто хотел бы URL на сайте это: http://ccnmn.loke.itvault.no

NB: это на норвежском языке. Вы найдете форму, нажав «» Стоимости заявлена ​​в верхнем меню, а затем «» в Бронировать пакеты показанных

+0

Что вызывает регистр функций? Заданный другим способом, как ваш код добирается до того, где он называет 'register()'? – Tommy

+0

Это была бы моя последняя попытка, onsubmit = "register(); return false;". Я отредактирую свой вопрос –

+0

Без контекста нельзя сказать. –

ответ

1

Это Fiddle показывает, что ваш код работает очень хорошо с правильной event.preventDefault(); или return false; на месте в правильных местах код (также, я изменил вашу переменную от form до myForm на всякий случай, когда произошло какое-то странное столкновение имен.) Если вы зеркалируете эту скрипту и все еще имеете проблемы, ваша проблема должна лежать в другом месте (у вас нет обработчика в submit кнопка?).

<form class="register-form" action="/echo" method="POST"> 
    <input type="Text" id="test" name="test"/> 
    <input type="Submit" value="Go" id="TestSubmit"/> 
</form> 

jQuery(document).ready(function(){ 
    jQuery('.register-form').submit(function(event){ 
     event.preventDefault(); 
     var myForm = $(this).serialize(); 
     jQuery.ajax({ 
      type : "post", 
      dataType : "json", 
      url : "www.google.com", 
      data : myForm, 
      success : function(d){ 
       if(d.success) { 
        alert('Takk for din påmelding'); 
       } else { 
        alert('Noe gikk galt, vennligst prøv igjen senere'); 
       } 
      }, 
      error: function(){ 
       alert('Noe gikk galt, vennligst prøv igjen senere'); 
      } 
     }); 
     //return false; would also work here instead 
     //of the event.preventDefault(); above   
    }); 
}); 
+0

'return false;' в конце также работает. – PHPglue

+0

@PHPglue - это действительная точка. Я проверил его код, используя методы, которые я использую ('event.preventDefault();'), а также предлагаемую реализацию из jQuery - http://api.jquery.com/submit/. Тем не менее, я буду обновлять ответ, чтобы включить, что return false также работает. – Tommy