2014-08-02 2 views
0

У меня есть следующий код, который должен отправить форму через Ajax без перезагрузки страницы:Ajax Form Can not Prevent Page Reload with event.preventDefault();

$(document).on('submit', '.login_form', function(event){ 
    event.preventDefault(); 
    var $this = $(this); 
    $.ajax({ 
     data: "action=login_submit&" + $this.serialize(), 
     type: "POST", 
     url: _ajax_login_settings.ajaxurl, 
     success: function(msg){ 

      ajax_login_register_show_message($this, msg); 

     } 
    }); 
}); 

Однако по какой-то причине, несмотря на функции event.preventDefault(); которая должна предотвратить форму от фактически стрельб, его фактически делает огонь.

Мой вопрос: как я могу предотвратить вышеуказанную форму при перезагрузке страницы?

Благодаря

+0

посмотрите на [это] (http://stackoverflow.com/questions/5150532/how-do-i-stop-the-form-from-reloading-using-javascript) –

+0

Я действительно посмотрел, но, к сожалению, у меня нет доступа к коду генерации формы, поэтому я не могу изменить форму с предоставленным ответом. – user2028856

+0

возможно [это] (http://stackoverflow.com/questions/17456231/form-submit-preventing-page-reload-jquery) может помочь, просто поместите 'event.preventDefault()' или 'return false;' в и функции –

ответ

0

, например, вы можете написать, как этот

$(".login_form").on('submit', function(event){ 
    var $this = $(this); 
    $.ajax({   
     data: "action=login_submit&" + $this.serialize(), 
     type: "POST", 
     url: _ajax_login_settings.ajaxurl, 
     success: function(msg){ 

     ajax_login_register_show_message($this, msg); 

     } 
    }); 
    event.preventDefault(); 
}); 
+0

Это не работает, страница все еще обновляется – user2028856

+0

, пожалуйста, см. Отредактированный ответ –

+0

Я пробовал ваше последнее редактирование, проблема в том, что форма не отправляет – user2028856

2

не прикрепить слушателя документа вместо этого использовать на обработчик мыши на кнопку отправки и измените тип на кнопку.

<button id="form1SubmitBtn">Submit</button> 
$('#form1SubmitBtn').click(function(){ 

    //do ajax here 
}); 

Happy Coding !!!

+0

У меня нет доступа к коду генерации HTML-кода формы, поэтому я не могу просто изменить html, как указано выше, извините, извините – user2028856

0

Вы можете использовать jquery и ajax для этого. Вот хороший код части ниже, который не обновляет страницу, а вместо этого отправляет форму, которая скрывается и заменяется благодарственным сообщением. Данные формы отправляются на адрес электронной почты, используя скрипт sendmail.php.

Предполагая, что ваша форма имеет 3 поля ввода - имя, адрес электронной почты и сообщение.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 

<script type="text/javascript"> 
jQuery(function() { 
jQuery("#button").click(function() { 

var name=jQuery('#name').val(); 
var email=jQuery('#email').val(); 
var message=jQuery('#message').val(); 

var dataString = 'name='+ name + '&email=' + email + '&message=' + message; 

jQuery.ajax({ 
type: "POST", 
url: "sendmail.php", 
data: dataString, 
success: function() { 
jQuery('#contact_form').html("<div id='message'></div>"); 
jQuery('#contactForm').hide(); 
jQuery('#message').html("<h2>Contact Form Submitted!</h2>") 
.append("<p>Thank you for your submission. We will be in touch shortly.</p>").hide() 
.fadeIn(1500, function() { 
}); 
} 
}); 
return false; 
}); 
}); 

</script> 

В верхней части вашего тега формы просто добавьте это, чтобы отобразить сообщение благодарности.

<div id='message'></div> 

Наслаждайтесь кодированием !!!!!!!