我尝试使用Ajax和jquery表单验证来发布数据,但它在第一次提交函数时不起作用并进行验证。任何解决方案?
$(document).ready(function() {
$("#myForm").validate();
});
(function($){
function processForm( e ){
$.ajax({
url: 'post.php',
dataType: 'text',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
data: $(this).serialize(),
success: function( data, textStatus, jQxhr ){
//$('#response pre').html( data );
alert('scuss');
},
error: function( jqXhr, textStatus, errorThrown ){
//console.log( errorThrown );
alert('error');
}
});
e.preventDefault();
}
$('#myForm').submit(function(e){
e.preventDefault();
if(!$("#myForm").valid()) return;
$('#myForm').submit( processForm );
});
})(jQuery);
答案 0 :(得分:1)
为什么在submit
内拨打submit
?只需拨打function processForm
部分中的else
,如下所示:
$('#myForm').submit(function(e){
e.preventDefault();
if(!$(this).valid())
return;
else
processForm($(this));
});
无需将e
传递给您,因为您已经阻止action
的默认form
,而是通过form
本身。
function processForm(form){
var $this=$(form);//cache the form
$.ajax({
url: 'post.php',
dataType: 'text',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
data: $this.serialize(),
success: function( data, textStatus, jQxhr ){
//$('#response pre').html( data );
alert('scuss');
},
error: function( jqXhr, textStatus, errorThrown ){
//console.log( errorThrown );
alert('error');
}
});
}