即使有效,JQuery验证也会阻止表单提交

时间:2014-03-22 11:41:20

标签: jquery jquery-validate

我有一个由优秀的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."

        },

    });

表单的行为方式如下:

所有字段都完美地验证并按预期验证,在正确的时间显示正确的消息。但是当您单击“提交”按钮(这是一个类型为&#34的元素;提交")时,没有任何反应。按钮已经死了。

pattern.js文件位于上面代码的正下方,子域字段由RegEx正确验证。

我有一种潜在的怀疑,可能是因为"依赖"在registerSub元素上运行,但注释掉这些行无效。

任何见解都会受到赞赏......谢谢!

2 个答案:

答案 0 :(得分:2)

因为你有debug: true,会阻止表单提交,即使它有效......它只是用于测试....

删除它,它应该没问题

答案 1 :(得分:0)

问题解决了!

问题在于我使用的是localhost环境并且有remote验证规则。

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

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

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

因此,我认为必定会出现某种阻止表单提交的事件阻塞。

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

所以,似乎"遥控器"方法验证表单,但如果有一个远程验证的元素,则该验证不会计入valid()方法中。

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