JQuery验证和表单提交-提交按钮需要按下两次

JQuery验证和表单提交-提交按钮需要按下两次,jquery,jquery-validate,Jquery,Jquery Validate,我是javascript/jquery的新手 我试图通过JQuery验证注册表表单,验证工作正常,但在提交表单之前我遇到了一个小问题 确切地说,用户必须按两次提交,第一次是为了运行验证,第二次是为了实际提交表单 按“提交”一次的解决方案是什么,以及通过所有验证规则然后提交公式的代码是什么 $('document').ready(函数() { //名称验证 var nameregex=/^[a-zA-Z]+$/; $.validator.addMethod(“validname”,函数(值,元素

我是javascript/jquery的新手

我试图通过JQuery验证注册表表单,验证工作正常,但在提交表单之前我遇到了一个小问题

确切地说,用户必须按两次提交,第一次是为了运行验证,第二次是为了实际提交表单

按“提交”一次的解决方案是什么,以及通过所有验证规则然后提交公式的代码是什么

$('document').ready(函数()
{
//名称验证
var nameregex=/^[a-zA-Z]+$/;
$.validator.addMethod(“validname”,函数(值,元素){
返回此.optional(元素)| | nameregex.test(值);
});
//有效的电子邮件模式
变量eregex=/^([a-zA-Z0-9\.-\+])+\@([a-zA-Z0-9\-])+)+([a-zA-Z0-9]{2,4})+$/;
$.validator.addMethod(“validemail”,函数(值,元素){
返回此.optional(element)| | eregex.test(value);
});
$(“#登记表”)。验证({
规则:
{
姓名:{
要求:正确,
真的,
最小长度:4
},
电邮:{
要求:正确,
电子邮件:是的,
瓦利德梅尔:是的
},
手机号码:{
必填项:true
//phoneUK:是的
},
},
信息:
{
姓名:{
必填:“请输入您的名字”,
validname:“名称必须仅包含字母和空格”,
minlength:“你的名字太短了”
},
电邮:{
必填:“请输入电子邮件地址”,
validemail:“输入有效的电子邮件地址”
},
手机号码:{
必填:“请输入有效的电话号码”
}
},
errorPlacement:函数(错误,元素){
$(元素).closest('.form group').find('.help block').html(error.html());
},
亮点:功能(元素){
$(元素)。最近('.form group')。removeClass('has-success')。addClass('has-error');
},
取消高亮显示:函数(元素、errorClass、validClass){
$(元素)。最近('.form group')。removeClass('has-error')。addClass('has-success');
$(元素).closest('.form group').find('.help block').html('');
},
submitHandler:函数(表单){
$(“#登记表”)。关于(“提交”,职能(e){
e、 预防默认值();
var postData=新表单数据($(此)[0]);
var formURL=$(this.attr(“操作”);
var method=$(this.attr(“method”);
$.ajax({
url:formURL,
类型:方法,
数据:postData,
cache:false,
contentType:false,
processData:false,
成功:功能(数据){
$(“#register_dialog.modal header.modal title”).html(“谢谢!”);
$(“#register_dialog.modal body”).html(数据);
$(“#submitForm”).remove();
},
错误:函数(jqXHR、状态、错误){
console.log(状态+”:“+错误);
}
});
});
}
});
})

&时代;
登记表


提交
试试action=“javascript:;”


我通过将手机号码字段的输入类型更改为文本解决了这个问题,并在该规则上添加了数字,但我仍然存在提交两次的问题

用户必须按提交两次

之所以发生这种情况,是因为您在插件的
submitHandler
函数中('submit')上放置了

submitHandler: function(form) {
    $("#register-form").on("submit", function (e) { // <- ?!
        e.preventDefault();
        ....

您在OP中只提到“提交两次”问题,所以当您说“我已经解决了问题”时,您在说什么?好像你回答了一个完全不同的问题。我对代码有两个问题,第一个是验证mobile_number字段,阻止了在focusOut验证字段。第二个问题是“提交两次”问题。我的观点是,你回答的问题中有一部分是你从未真正问过的。请不要将盲目猜测作为答案。我已经尝试过你的解决方案,它一直有效,直到数据传递到form.php为止。我接收空字段。我会继续调查此事。非常感谢。@OctavianListea,您是否尝试过
$(form).serialize()
而不是
FormData()
?@OctavianListea,不管怎样,如果您没有获得数据,那么您在a中似乎遇到了完全不同的问题
submitHandler: function(form) {
    $("#register-form").on("submit", function (e) { // <- ?!
        e.preventDefault();
        ....
$("#register-form").validate({
    .....
    submitHandler: function(form) {
        var postData = new FormData($(form)),
            formURL = $(form).attr("action"),
            method = $(form).attr("method");

        $.ajax({
            ....
        });
        return false;
    }
});