我在jquery中有以下表单验证和提交脚本但由于某种原因它无效。它看起来像提交但是当我点击提交它只是重置表单,它没有有效或做ajax帖子。有谁知道我在这里做错了什么?
<script type="text/javascript">
$(function(){
$('#form').submit(function(e){
e.preventDefault();
$("#form").validate({debug: false,
rules: {
name: "required",
email: {
required: true,
email: true
},
phone: {
required: true,
phone: true
}
},
messages: {
name: "Please let us know who you are.",
email: "A valid email will help us get in touch with you.",
phone: "Please provide a valid phone number.",
},
submitHandler: function() {
// Send the request
$.post('/submit.php', {
name: $('#name').val(),
email: $('#email').val(),
phone: $('#phone').val(),
message: $('#message').val()
}, function(d){
alert("Thank you for submitting your request someone will contact your shortly.");
});
}
});
});
});
</script>
答案 0 :(得分:4)
你只需要添加
$('#form').submit(function(e) {
....
return false;
});
到提交结束时,这将避免执行表单的实际提交。
<强>更新强> 正如达斯汀所指出的那样,如果你不想阻止你的活动冒泡,预防默认可能会更好......
$('#form').submit(function(e) {
....
e.preventDefault();
});
答案 1 :(得分:0)
我稍微改了你的代码,好像你使用了jquery validate?,他们的文档有正确的方式来提交表单。 http://jqueryvalidation.org/documentation/#too-much-recursion
<script type="text/javascript">
$("#form").validate({
debug: false,
rules: {
name: "required",
email: {
required: true,
email: true
},
phone: {
required: true,
phone: true
}
},
messages: {
name: "Please let us know who you are.",
email: "A valid email will help us get in touch with you.",
phone: "Please provide a valid phone number.",
},
submitHandler: function(form) {
// Stop the form actually posting
e.preventDefault();
// Send the request
$.post('/submit.php', {
name: $('#name').val(),
email: $('#email').val(),
phone: $('#phone').val(),
message: $('#message').val()
}, function(d){
alert("Thank you for submitting your request someone will contact your shortly.");
});
}
});