Jquery 提交两次表格
我正在做一张查询表。我是jquery新手。在阅读jquery验证插件和ajax之后,我编写了以下代码。这段代码首先验证表单,然后通过ajax提交表单。如果我提交表格,表格将提交两次。结果是两次 我不能犯错误Jquery 提交两次表格,jquery,jquery-validate,Jquery,Jquery Validate,我正在做一张查询表。我是jquery新手。在阅读jquery验证插件和ajax之后,我编写了以下代码。这段代码首先验证表单,然后通过ajax提交表单。如果我提交表格,表格将提交两次。结果是两次 我不能犯错误 <script> $(document).ready(function () { $('#contactForm').validate({ rules: { name: { required: tru
<script>
$(document).ready(function () {
$('#contactForm').validate({
rules: {
name: {
required: true
},
email: {
required: true,
email: true
},
address: {
required: true
},
message: {
required: true
},
security: {
required: true
}
},
messages: {
name: {
required: '* Please Enter Your Name.'
},
email: {
required: "* Please Enter Your E-mail ",
email: "* Please enter proper E-mail "
},
address: {
required: "* Please enter address."
},
message: {
required: "* Please enter Enquiry"
},
security: {
required: "* Please enter Security code"
}
},
submitHandler: function (form) {
// Ajax Submit here
// alert($("#contactForm").serialize());
$.ajax({
type: "POST",
url: "assets/sendmail.php",
data: $("#contactForm").serialize(),
success: function (result) {
if (result == 'Success') {
$("#contactForm").hide();
$("#contact_response").html('<div class="alert alert-success">Thank you for your feedback.</div>');
} else {
alert(result);
}
return false;
}
});
return false;
}
});
});
$(文档).ready(函数(){
$(“#contactForm”)。验证({
规则:{
姓名:{
必填项:true
},
电邮:{
要求:正确,
电子邮件:真的
},
地址:{
必填项:true
},
信息:{
必填项:true
},
安全:{
必填项:true
}
},
信息:{
姓名:{
必填项:“*请输入您的姓名。”
},
电邮:{
必填:“*请输入您的电子邮件”,
电子邮件:“*请输入正确的电子邮件”
},
地址:{
必填:“*请输入地址。”
},
信息:{
必填:“*请输入查询”
},
安全:{
必填:“*请输入安全代码”
}
},
submitHandler:函数(表单){
//Ajax在这里提交
//警报($(“#contactForm”).serialize();
$.ajax({
类型:“POST”,
url:“assets/sendmail.php”,
数据:$(“#contactForm”).serialize(),
成功:功能(结果){
如果(结果=‘成功’){
$(“#contactForm”).hide();
$(“#联系#u回复”).html('感谢您的反馈');
}否则{
警报(结果);
}
返回false;
}
});
返回false;
}
});
});
html表单是
<form action="assets/sendmail.php" method="post" name="contactForm" id="contactForm" >
<!-- STEP-2 : GENERAL SETTINGS -->
<input type="hidden" name="success_page" value="../contact-us?res=thank-you" id="success_page" /><!-- PAGE TO REDIRECT AFTER SUBMIT -->
<input type="hidden" name="email_to" value="<?=get_settings('contact_email');?>" id="email_to" /><!-- EMAIL ADDRESS WHERE WE WANT TO RECEIVE EMAIL -->
<input type="hidden" name="email_subject" value="Query Recieved" id="email_subject" /><!-- SUBJECT OF THE EMAIL -->
<!-- STEP-2 : GENERAL SETTINGS -->
<label for="name" class="nameLabel">Name</label>
<input id="name" type="text" name="name" />
<label class="control-label">Email address</label>
<div class="controls">
<input type="email" name="email" id="email" />
<p class="help-block"></p>
</div>
<label for="address">Address</label>
<input id="address" type="text" name="address" />
<label for="message" class="messageLabel">Enquiry</label>
<textarea id="message" name="message" /></textarea>
<label >Security Code</label>
<img src="classes/CaptchaSecurityImages.php?width=100&height=30&characters=5" alt="captcha" style="vertical-align:bottom;"/> <input id="security" name="security" class="required" type="text" style="width:30%;vertical-align:bottom;margin-bottom:0px;padding-bottom:0px;"/></br>
<button type="submit" id="submit" name="submit">Send</button>
</form>
</script>
然而,在OP中,似乎您已经在一组
标记中包围了jQuery和HTML
<script>
$(document).ready(function () {
$('#contactForm').validate({
// rules, options, etc.
});
});
</script>
在JavaScript的开头有一个
标记
<script>
$(document).ready(function () {
$('#contactForm').validate({
rules: {
....
$(文档).ready(函数(){
$(“#contactForm”)。验证({
规则:{
....
在HTML的末尾有一个结束标记
....
</form>
</script>
。。。。
您不能这样做,它可能会破坏整个页面。只将JavaScript包含在
标记中
<script>
$(document).ready(function () {
$('#contactForm').validate({
// rules, options, etc.
});
});
</script>
$(文档).ready(函数(){
$(“#contactForm”)。验证({
//规则、选项等。
});
});
您也不需要在
标记中使用action=“assets/sendmail.php”
。您已经有了.ajax()
,可以使用jQuery验证插件的submitHandler
将数据发送到assets/sendmail.php
我注意到另外两个小的HTML问题
1) 您有一个关闭标记。。因此您可以单独使用
,或者“自动关闭”它:
(请注意斜杠的关键位置)
2) 您的textarea
是这样写的:
。这是无效的HTML,因为当它已经有一个结束标记
时,您不能“自动关闭”textarea
。您只需这样写:
使用正确的HTML和有效的jQuery验证进行演示:只需在php代码中编写以下逻辑:
if(!empty($email)){
@mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
}
if(!empty($email)){
@邮件($email_to,$subject,$body,'From:');
}
这将阻止发送带有空值的电子邮件。表单的HTML代码是什么?我已编辑。请检查它…将onsubmit='return:false;'
添加到表单以防止默认提交操作。或使用
instead@ammarkhan我认为这可能是因为action=“assets/sendmail.php”
在您的表单中,因为您的Ajax中已经有了它。请尝试删除它。