我正在使用Jquery验证插件来验证表单,一切都很好验证我的问题是在submitHandler函数中由于某种原因我不知道是不是发送表单到我的邮件,我检查了PHP并且完全没问题。这是我正在做更完整http://jsfiddle.net/KszmV/
的文件我需要做的其他事情,我不知道该怎么做,它是如何提交表单而不再加载页面并在表单的末尾显示消息
这是我的剧本
<script type="text/javascript">
$(document).ready(function(){
$("#contactusform1").validate({
rules: {
"name": {
required: true,
minlength: 3
},
"phone":{
required:true,
digits:true
},
"email":{
required: true
}
},
messages: {
"name": {
required: "Please enter a name"
},
"phone":{
required: "Please provide a contact number"
},
"email":{
required: "Enter a valid email"
}
},
errorPlacement: function(error, element) {
error.insertAfter(element);
},
submitHandler: function (form) {
$.ajax({
type: 'POST',
data: $('form').serialize(),
url: 'process-contact1.php',
success: function () {
}
});
form.submit();
}
});
});
</script>
答案 0 :(得分:1)
你有一些问题
submitHandler: function (form) {
$.ajax({
type: 'POST',
data: $(form).serialize(), // $(form) is ok here
url: 'process-contact1.php',
success: function () {
}
});
form.submit(); //<-- REMOVE this
return false; //<-- ADD this
}
DEMO:http://jsfiddle.net/Y8cHm/
删除form.submit()
,因为该插件已经在处理此问题。
您需要return false
submitHandler
,因为您正在进行ajax
,否则您将获得正常的提交/页面刷新。
Your jsFiddle缺少</form>
代码。
Your jsFiddle链接到插件的gitHub page而不是the CDN.
$(form).serialize()
完全可以接受,如上面的工作演示中所示。使用引号,$('form')
只会定位页面上的任何<form>
。而$(form)
的目标是已经传递到.validate()
函数的相同表单元素。 在你的演示中,他们都给出了相同的结果,尽管这可能不适用于所有其他情况。