Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
JQueryValidation阻止表单提交,即使表单有效_Jquery_Jquery Validate - Fatal编程技术网

JQueryValidation阻止表单提交,即使表单有效

JQueryValidation阻止表单提交,即使表单有效,jquery,jquery-validate,Jquery,Jquery Validate,我有一个由优秀的JQueryValidation插件验证的表单 但是,由于某些原因,表单在验证时根本不希望提交。我已经隔离了这个问题,这是由于验证本身——我的表单HTML是有效的,提交时没有JQueryValidation 以下是我要传递给JqueryValidation对象的对象: var validator = $("#registrationForm").validate({ debug: true, rules: { regi

我有一个由优秀的JQueryValidation插件验证的表单

但是,由于某些原因,表单在验证时根本不希望提交。我已经隔离了这个问题,这是由于验证本身——我的表单HTML是有效的,提交时没有JQueryValidation

以下是我要传递给JqueryValidation对象的对象:

var validator = $("#registrationForm").validate({

        debug: true,

        rules: {

            registerName: {
                required: true
            },

            registerEmail: {
                required: true,
                email:true,
                remote: "http://beta.build2trade.com/Testmail.asp",
            },

            registerPassword: {
                required: true
            },

            registerPasswordConfirm: {
                required: true,
                equalTo: "#registerPassword"
            },

            registerSub: {
                pattern: "^[a-zA-Z0-9]+$",
                remote: "http://beta.build2trade.com/testsub.asp",
                required: { 
                    depends: function(element) {
                        if ($("#domain-type-3").is(":checked")){
                            console.log("Subdomain Radiobutton checked");
                            return true;
                        } else {
                            console.log("Subdomain Radiobutton not checked");
                            return false;
                        }
                    }
                }
            },



        },

        messages : {

            registerName: "Please type in your name.",
            registerEmail: "Please enter a valid email.",
            registerPassword: "Please type in your password.",
            registerPasswordConfirm: "Please confirm your password.",
            registerSub: "Invalid Subdomain."

        },

    });
这是窗体的行为方式:

所有字段都按照预期进行了完美验证,在正确的时间显示了正确的消息。但是,当您单击Submit按钮(这是一个类型为“Submit”的元素)时,什么都不会发生。按钮没电了

pattern.js文件包含在上面代码的正下方,子域字段通过RegEx正确验证

我暗自怀疑这可能是由于registerSub元素上的“depends”函数造成的,但将这些行注释掉并没有任何效果


如有任何见解,将不胜感激。。。谢谢大家!

因为您有
debug:true,
这将阻止表单提交,即使表单有效。。。这只是为了测试

拆下它,它应该会很好

问题解决了

问题在于我使用的是本地主机环境,并且有一个
remote
验证规则

我在本地主机环境中工作,使用
remote
规则验证域名和电子邮件地址字段。在本地环境中,由于HTTP安全限制,这些验证失败

然而,我遇到的问题是表单根本没有发布

起初我认为这可能是因为表单无效,但我使用
console.log
检查valid()方法,它返回
true

因此,我认为一定有某种事件阻止了表单的提交

但是,当我将代码发布到实时环境中进行检查时,问题就消失了

因此,似乎“remote”方法验证表单,但如果存在远程验证的元素,则valid()方法中不会计算该验证


我已经用JQueryValidation记录了这个。感谢大家的阅读。

。。。那很快。谢谢你,阿伦!不幸的是,删除debug:true后问题仍然存在。我也有其他表单设置了这一行,可以正确发布。@Gandalf,如果你认为可以在
debug:true
就绪时提交表单,那你就错了。
$(“#registrationForm”).valid()
返回
true
你需要阅读跨站点脚本以及它与JavaScript的关系。换句话说,如果某个域与JavaScript不在同一个位置,您就不能在远程方法中放入完整的URL。我理解,远程方法提供了一种查询远程脚本以进行服务器端验证的方法。我和插件开发人员一起记录了这个问题,他们已经承认了。是的,只要他们在同一个域上。我知道如果
remote
方法无法连接,您是如何声明
.valid()
应该是
false
。但是,我也看到了,就像这个例子一样。