Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 提交两次表格_Jquery_Jquery Validate - Fatal编程技术网

Jquery 提交两次表格

Jquery 提交两次表格,jquery,jquery-validate,Jquery,Jquery Validate,我正在做一张查询表。我是jquery新手。在阅读jquery验证插件和ajax之后,我编写了以下代码。这段代码首先验证表单,然后通过ajax提交表单。如果我提交表格,表格将提交两次。结果是两次 我不能犯错误 <script> $(document).ready(function () { $('#contactForm').validate({ rules: { name: { required: tru

我正在做一张查询表。我是jquery新手。在阅读jquery验证插件和ajax之后,我编写了以下代码。这段代码首先验证表单,然后通过ajax提交表单。如果我提交表格,表格将提交两次。结果是两次 我不能犯错误

<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&amp;height=30&amp;characters=5" alt="captcha" style="vertical-align:bottom;"/>&nbsp;&nbsp;&nbsp;<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中已经有了它。请尝试删除它。