Javascript Jquery验证插件多次提交在Safari中不起作用

Javascript Jquery验证插件多次提交在Safari中不起作用,javascript,jquery,validation,Javascript,Jquery,Validation,我正在使用Jquery验证插件来验证表单。 我想避免多次提交,所以我禁用submithandler中的按钮。 我已经读到我不应该在submithandler中使用form.submit(),但是表单不会被提交 最后我让代码开始工作,按钮被禁用,表单被提交。但它在Mac上的Safari中不起作用。(在Chrome中,它确实起作用) 我应该换什么 $(document).ready(function () { $('#person_A_details').validate({

我正在使用Jquery验证插件来验证表单。 我想避免多次提交,所以我禁用submithandler中的按钮。 我已经读到我不应该在submithandler中使用form.submit(),但是表单不会被提交

最后我让代码开始工作,按钮被禁用,表单被提交。但它在Mac上的Safari中不起作用。(在Chrome中,它确实起作用) 我应该换什么

$(document).ready(function () {
        $('#person_A_details').validate({ 
            rules: {
                CONTACTS_EMAIL: {
                    required: true,
                    email: true
                },
                CONTACTS_LNAME: "required",
                CONTACTS_FNAME: "required",
                CONTACTS_GENDER: "required",
                CONTACTS_PHONE: "required",
                CONTACTS_LANGUAGE: "required",
                CONTACTS_FIXEDPARTNER: "required",
                PRODUCT_SELECT: "required",
            },
            messages: {
                CONTACTS_FNAME: "<?php echo $FRM_ERRMSG_CONTACTS_FNAME;?>",
                CONTACTS_LNAME: "<?php echo $FRM_ERRMSG_CONTACTS_LNAME;?>",
                CONTACTS_GENDER: "<?php echo $FRM_ERRMSG_CONTACTS_GENDER;?>",
                CONTACTS_PHONE: "<?php echo $FRM_ERRMSG_CONTACTS_PHONE;?>",
                CONTACTS_LANGUAGE: "<?php echo $FRM_ERRMSG_CONTACTS_LANGUAGE;?>",
                CONTACTS_FIXEDPARTNER: "<?php echo $FRM_ERRMSG_CONTACTS_FIXEDPARTNER;?>",
                PRODUCT_SELECT: "<?php echo $FRM_ERRMSG_PRODUCT_SELECT;?>",
                CONTACTS_EMAIL: {
                  required: "<?php echo $FRM_ERRMSG_CONTACTS_EMAIL;?>",
                  email: "<?php echo $FRM_ERRMSG_CONTACTS_EMAIL_FORMAT;?>"
                }
              },
            submitHandler: function (form) { 
                $("#FIRST_PAGE_submitbtn").attr("disabled", "disabled");
                //$( "#FIRST_PAGE_submitbtn" ).prop( "disabled", true ); -> I also trief the prop but this does not work either in safari
                 form.submit();
            }
        });
            $('#PARTNER_DETAILS').validate({ 
                rules: {
                    PARTNER_CONTACTS_EMAIL: {
                        required: true,
                        email: true
                    },
                    PARTNER_CONTACTS_FNAME: "required",
                    PARTNER_CONTACTS_LNAME: "required",
                    PARTNER_CONTACTS_GENDER: "required",
                    CONTACTS_PRIVACY_POLICY_AGREE: "required",
                },
                messages: {
                    PARTNER_CONTACTS_FNAME: "<?php echo $FRM_ERRMSG_PARTNER_CONTACTS_FNAME;?>",
                    PARTNER_CONTACTS_LNAME: "<?php echo $FRM_ERRMSG_PARTNER_CONTACTS_LNAME;?>",
                    PARTNER_CONTACTS_GENDER: "<?php echo $FRM_ERRMSG_PARTNER_CONTACTS_GENDER;?>",
                    CONTACTS_PRIVACY_POLICY_AGREE: "<?php echo $FRM_ERRMSG_CONTACTS_PRIVACY_POLICY_AGREE;?>",
                    PARTNER_CONTACTS_EMAIL: {
                      required: "<?php echo $FRM_ERRMSG_PARTNER_CONTACTS_EMAIL;?>",
                      email: "<?php echo $FRM_ERRMSG_PARTNER_CONTACTS_EMAIL_FORMAT;?>"
                    }
                  },
                submitHandler: function (form) { 
                    $("#PARTNER_DETAILS_submitbtn").attr("disabled", "disabled");
                     form.submit();
                }
            });
            $('#NO_PARTNER').validate({ 
                rules: {
                    CONTACTS_AGE: "required",
                    CONTACTS_HEIGHT: "required",
                    CONTACTS_PRIVACY_POLICY_AGREE: "required",
                },
                messages: {
                    CONTACTS_AGE: "<?php echo $FRM_ERRMSG_CONTACTS_AGE;?>",
                    CONTACTS_HEIGHT: "<?php echo $FRM_ERRMSG_CONTACTS_HEIGHT;?>",
                    CONTACTS_PRIVACY_POLICY_AGREE: "<?php echo $FRM_ERRMSG_CONTACTS_PRIVACY_POLICY_AGREE;?>",
                  },
                submitHandler: function (form) { 
                    $("#NO_PARTNER_submitbtn").attr("disabled", "disabled");
                     form.submit();
                }
            });

        });
$(文档).ready(函数(){
$(“#个人详细信息”)。验证({
规则:{
联系方式及电邮:{
要求:正确,
电子邮件:真的
},
联系人名称:“必需”,
联系人名称:“必需”,
联系人性别:“必需”,
联系电话:“必需”,
联系人语言:“必需”,
联系人\u FIXEDPARTNER:“必需”,
产品选择:“必需”,
},
信息:{
联系人姓名:“,
联系人名称:“,
联络人性别:“,
联络电话:“,
联络人(英语):,
联系人\固定合作伙伴:“”,
产品选择:“,
联系方式及电邮:{
必填项:“”,
电子邮件:“
}
},
submitHandler:函数(形式){
$(“第一页提交”).attr(“禁用”、“禁用”);
//$(“#FIRST#PAGE_submitbtn”).prop(“disabled”,true);->我也尝试过该道具,但在safari中也不起作用
表单提交();
}
});
$(“#合作伙伴_详细信息”)。验证({
规则:{
合作伙伴联系人电子邮件:{
要求:正确,
电子邮件:真的
},
合作伙伴联系人姓名:“必需”,
合作伙伴联系人姓名:“必需”,
合作伙伴联系人性别:“必填”,
联系人\u隐私\u政策\u同意:“必需”,
},
信息:{
合作伙伴联系人姓名:“,
合作伙伴联系人姓名:“,
合作伙伴联系人性别:“,
联系人(隐私)政策(同意):“,
合作伙伴联系人电子邮件:{
必填项:“”,
电子邮件:“
}
},
submitHandler:函数(形式){
$(“合作伙伴详细信息”提交tn”).attr(“禁用”、“禁用”);
表单提交();
}
});
$('#无合作伙伴')。验证({
规则:{
联系人年龄:“必填”,
触点高度:“必需”,
联系人\u隐私\u政策\u同意:“必需”,
},
信息:{
联络人姓名:“,
触点高度:“,
联系人(隐私)政策(同意):“,
},
submitHandler:函数(形式){
$(“无合作伙伴提交”).attr(“禁用”、“禁用”);
表单提交();
}
});
});
下面是我生成HTML的php代码

<body>
<?php
if(!isset($_POST['person_A_details'])) {
    echo "<!--<h1><b>".$P1_TITLE."</b></h1>-->
    <form name='person_A_details' id='person_A_details' method='post' action='' >
    ".$PRODUCT_SELECT_TXT.$REQ_AST."<label for='PRODUCT_SELECT' class='error' style='display:none;'></label><br>";

    $sql= "SELECT CRM_PRODUCTS.ID, CRM_PRODUCTS.PRODUCTS_NAME, CRM_PRODUCTS.PRODUCTS_WEBNAME_EN, CRM_PRODUCTS.PRODUCTS_WEBNAME_FR,CRM_PRODUCTS.PRODUCTS_WEBNAME_NL,CRM_PRODUCTS.PRODUCTS_TIMING,CRM_PRODUCTS.PRODUCTS_DATES, CRM_LOCATIONS.LOCATIONS_CITY,CRM_LOCATIONS.LOCATIONS_CITY_FR, CRM_LOCATIONS.LOCATIONS_CITY_NL FROM CRM_PRODUCTS JOIN CRM_LOCATIONS ON CRM_PRODUCTS.LOCATIONS_ID=CRM_LOCATIONS.LOCATIONS_ID WHERE CRM_PRODUCTS.PRODUCTS_PUBLISHONWEBSITE=1 AND CRM_PRODUCTS.PRODUCTS_TYPE='Weekly_class' order by CRM_PRODUCTS.PRODUCTS_CREATEDATE";
    $result = mysqli_query($coni,$sql);

    while ($row = mysqli_fetch_array($result)){
        if ($language=="EN") echo "<input type='radio' name='PRODUCT_SELECT' value=".$row['ID'].">".$row['PRODUCTS_WEBNAME_EN']."<br>";
        if ($language=="FR") echo "<input type='radio' name='PRODUCT_SELECT' value=".$row['ID'].">".$row['PRODUCTS_WEBNAME_FR']."<br>";
        if ($language=="NL") echo "<input type='radio' name='PRODUCT_SELECT' value=".$row['ID'].">".$row['PRODUCTS_WEBNAME_NL']."<br>";
    }
    echo $FNAME.$REQ_AST."<label for='CONTACTS_FNAME' class='error' style='display:none;'></label><input type='text' name='CONTACTS_FNAME'><br>
    ".$LNAME.$REQ_AST."<label for='CONTACTS_LNAME' class='error' style='display:none;'></label><input type='text' name='CONTACTS_LNAME'><br>
    ".$GENDER.$REQ_AST."<label for='CONTACTS_GENDER' class='error' style='display:none;'></label><br>
    <input type='radio' name='CONTACTS_GENDER' value='M'> ".$GENDER_M."
    <input type='radio' name='CONTACTS_GENDER' value='F'> ".$GENDER_F."<br>
    <br>
    ".$EMAIL.$REQ_AST."<label for='CONTACTS_EMAIL' class='error' style='display:none;'></label><input type='text' name='CONTACTS_EMAIL'><br>
    ".$P1_PHONE.$REQ_AST."<label for='CONTACTS_PHONE' class='error' style='display:none;'></label><input type='text' name='CONTACTS_PHONE'><br>
    ".$P1_POSTALCODE."<input type='text' name='CONTACTS_POSTALCODE'><br>
    ".$P1_PREF_LANG.$REQ_AST."<label for='CONTACTS_LANGUAGE' class='error' style='display:none;'></label> <select name='CONTACTS_LANGUAGE'>
    <option value=''></option>
    <option value='EN'>English</option>
    <option value='FR'>Français</option>
    <option value='NL'>Nederlands</option>
    </select><br>
    ".$P1_DANCEPARTNER_SELECT.$REQ_AST." <label for='CONTACTS_FIXEDPARTNER' class='error' style='display:none;'></label><select name='CONTACTS_FIXEDPARTNER'>
    <option value=''></option>
    <option value='yes'>".$PARTNER_YES."</option>
    <option value='no'>".$PARTNER_NO."</option>
    </select><br>
    ".$P1_REMARKS."<textarea rows = '3' name='PRODUCTS_PURCHASE_REMARKS'></textarea><br>
    <br><br>
    <input type='submit' name='person_A_details' value='".$P_SUBMIT."' id='FIRST_PAGE_submitbtn'>
    </form>";
}

if(isset($_POST['person_A_details']) && $_POST['CONTACTS_FIXEDPARTNER']=='yes') {

    //log progress of form in post.log
    $log_date = date("d/m/y : H:i :");
    $log_content =  $log_date. " ".
                    $_POST['PRODUCT_SELECT']." ".
                    $_POST['CONTACTS_FNAME']." ".
                    $_POST['CONTACTS_LNAME']." ".
                    $_POST['CONTACTS_GENDER']." ".
                    $_POST['CONTACTS_EMAIL']." ".
                    $_POST['CONTACTS_PHONE']." ".
                    $_POST['CONTACTS_POSTALCODE']." ".
                    $_POST['CONTACTS_LANGUAGE']." ".
                    $_POST['CONTACTS_FIXEDPARTNER']." ".
                    $_POST['PRODUCTS_PURCHASE_REMARKS']." ";

    file_put_contents("post_paid_class.log",$log_content, FILE_APPEND);
    //end log

    echo "
    <form name='PARTNER_DETAILS' id='PARTNER_DETAILS' method='post' action='register_class_submit.php'>
    <h2>".$P_DP_TITLE."</h2>
    ".$FNAME.$REQ_AST."<label for='PARTNER_CONTACTS_FNAME' class='error' style='display:none;'></label><input type='text' name='PARTNER_CONTACTS_FNAME'><br>
    ".$LNAME.$REQ_AST."<label for='PARTNER_CONTACTS_LNAME' class='error' style='display:none;'></label><input type='text' name='PARTNER_CONTACTS_LNAME'><br>
    ".$EMAIL.$REQ_AST."<label for='PARTNER_CONTACTS_EMAIL' class='error' style='display:none;'></label><input type='text' name='PARTNER_CONTACTS_EMAIL'><br>
    ".$GENDER.$REQ_AST."<label for='PARTNER_CONTACTS_GENDER' class='error' style='display:none;'></label><br>
    <input type='radio' name='PARTNER_CONTACTS_GENDER' value='M'> ".$GENDER_M."
    <input type='radio' name='PARTNER_CONTACTS_GENDER' value='F'> ".$GENDER_F."<br><br>
    <input type='checkbox' name='CONTACTS_PRIVACY_POLICY_AGREE'>".$PRIVACY_POLICY.$REQ_AST." <label for='CONTACTS_PRIVACY_POLICY_AGREE' class='error' style='display:none;'></label>
    <br><br>
    <input type='hidden' name='PRODUCT_SELECT' value='".$_POST['PRODUCT_SELECT']."'>
    <input type='hidden' name='CONTACTS_FNAME' value='".$_POST['CONTACTS_FNAME']."'>
    <input type='hidden' name='CONTACTS_LNAME' value='".$_POST['CONTACTS_LNAME']."'>
    <input type='hidden' name='CONTACTS_GENDER' value='".$_POST['CONTACTS_GENDER']."'>
    <input type='hidden' name='CONTACTS_EMAIL' value='".$_POST['CONTACTS_EMAIL']."'>
    <input type='hidden' name='CONTACTS_PHONE' value='".$_POST['CONTACTS_PHONE']."'>
    <input type='hidden' name='CONTACTS_POSTALCODE' value='".$_POST['CONTACTS_POSTALCODE']."'>
    <input type='hidden' name='CONTACTS_LANGUAGE' value='".$_POST['CONTACTS_LANGUAGE']."'>
    <input type='hidden' name='CONTACTS_FIXEDPARTNER' value='".$_POST['CONTACTS_FIXEDPARTNER']."'>
    <input type='hidden' name='PRODUCTS_PURCHASE_REMARKS' value='".$_POST['PRODUCTS_PURCHASE_REMARKS']."'>
    <input type='submit' name='PARTNER_DETAILS' value='".$P_SUBMIT."' id='PARTNER_DETAILS_submitbtn'>
    </form>";
    echo $CLICK_ONCE;
}

if(isset($_POST['person_A_details']) && $_POST['CONTACTS_FIXEDPARTNER']=='no') {
    //log progress of form in post.log
    $log_date = date("d/m/yyyy : H:i :");
    $log_content =  $log_date. " ".
                    $_POST['PRODUCT_SELECT']." ".
                    $_POST['CONTACTS_FNAME']." ".
                    $_POST['CONTACTS_LNAME']." ".
                    $_POST['CONTACTS_GENDER']." ".
                    $_POST['CONTACTS_EMAIL']." ".
                    $_POST['CONTACTS_PHONE']." ".
                    $_POST['CONTACTS_POSTALCODE']." ".
                    $_POST['CONTACTS_LANGUAGE']." ".
                    $_POST['CONTACTS_FIXEDPARTNER']." ".
                    $_POST['PRODUCTS_PURCHASE_REMARKS']." ";

    file_put_contents("post_paid_class.log",$log_content, FILE_APPEND);
    //end log

    echo "
    <form name='NO_PARTNER' id='NO_PARTNER' method='post' action='register_class_submit.php'>
    <h2>".$P_NP_TITLE."</h2>
    ".$P_NP_DESC."<br><br>
    ".$P_NP_AGE.$REQ_AST."<label for='CONTACTS_AGE' class='error' style='display:none;'></label> <input type='text' name='CONTACTS_AGE'><br>
    ".$P_NP_HEIGHT.$REQ_AST."<label for='CONTACTS_HEIGHT' class='error' style='display:none;'></label> <input type='text' name='CONTACTS_HEIGHT'><br>
    ".$P_NP_OTHLANG." <br>
    <input type='checkbox' name='CONTACTS_OTHER_LANGUAGES[]' value='EN'> English<br>
    <input type='checkbox' name='CONTACTS_OTHER_LANGUAGES[]' value='FR'> Français<br>
    <input type='checkbox' name='CONTACTS_OTHER_LANGUAGES[]' value='NL'> Nederlands<br>
    <input type='checkbox' name='CONTACTS_OTHER_LANGUAGES[]' value='DE'> German<br>
    <input type='checkbox' name='CONTACTS_OTHER_LANGUAGES[]' value='ES'> Spanish<br>
    <input type='checkbox' name='CONTACTS_OTHER_LANGUAGES[]' value='IT'> Italian<br>
    ".$P_NP_OTH." <input type='text' name='CONTACTS_OTHER_LANGUAGES[]'><br><br>
    <input type='checkbox' name='CONTACTS_PRIVACY_POLICY_AGREE'>".$PRIVACY_POLICY.$REQ_AST." <label for='CONTACTS_PRIVACY_POLICY_AGREE' class='error' style='display:none;'></label>
    <br><br>
    <input type='hidden' name='PRODUCT_SELECT' value='".$_POST['PRODUCT_SELECT']."'>
    <input type='hidden' name='CONTACTS_FNAME' value='".$_POST['CONTACTS_FNAME']."'>
    <input type='hidden' name='CONTACTS_LNAME' value='".$_POST['CONTACTS_LNAME']."'>
    <input type='hidden' name='CONTACTS_GENDER' value='".$_POST['CONTACTS_GENDER']."'>
    <input type='hidden' name='CONTACTS_EMAIL' value='".$_POST['CONTACTS_EMAIL']."'>
    <input type='hidden' name='CONTACTS_PHONE' value='".$_POST['CONTACTS_PHONE']."'>
    <input type='hidden' name='CONTACTS_POSTALCODE' value='".$_POST['CONTACTS_POSTALCODE']."'>
    <input type='hidden' name='CONTACTS_LANGUAGE' value='".$_POST['CONTACTS_LANGUAGE']."'>
    <input type='hidden' name='CONTACTS_FIXEDPARTNER' value='".$_POST['CONTACTS_FIXEDPARTNER']."'>
    <input type='hidden' name='PRODUCTS_PURCHASE_REMARKS' value='".$_POST['PRODUCTS_PURCHASE_REMARKS']."'>  
    <input type='submit' name='NO_PARTNER' value='".$P_SUBMIT."' id='NO_PARTNER_submitbtn'>
    </form>";
    echo $CLICK_ONCE;
}
}

mysqli_close($coni);

?>


你能从头到尾提供你的html代码吗,希望这是一个长的@Jomy Joseph,我用生成HTMLC的php代码更新了帖子问题,你可以尝试不同的表单名称。因为表单名称和提交按钮名称相同,或者尝试$(“#person_A_details”).submit();而不是form.submit();