jQuery验证不适用于两个字段

时间:2015-05-28 14:59:38

标签: javascript jquery jquery-validate

我需要验证域字段是否正确以及占位符字段是否具有值。一旦两者都为真,将显示“提交”按钮。使用jQuery验证,我可以检查域是否正确,但它没有验证占位符字段。未应用playerClass规则:

$(function() {
    $("#form").validate({
        rules: {
            playerClass: {
                required: true
            }
        },
        submitHandler: function() {
            $("body").append("<p>Validation Complete!</p>");
        }
    });
});
jQuery.validator.addMethod("domainChk", function(value, element, params) {
        $(".submit").show();
        if (this.optional(element)) return true;
        var regExp = new RegExp("^(?!www\\.|http:\/\/www\.)(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$");
        return regExp.test(value);
    },
    function errmess(params, element) {
        $(".submit").hide();
        return "Valid hostname required for player code";
    });
jQuery.validator.addClassRules({
    domainChk: {
        domainChk: true
    }
});

jsFiddle:Link

1 个答案:

答案 0 :(得分:0)

  

未应用playerClass规则

您的第二个字段name="playerClass"未经过验证,因为您未对其应用任何验证规则。您的jsFiddle或OP中没有名为playerClass的规则,并且您没有对jsFiddle中的playerClass字段应用任何规则。

即使playerClass是自定义规则,该表单也被认为是有效的,因为playerClass字段在您的jsFiddle中是可选的。如果没有required规则,当该字段留空时,它有效。

您还未能关闭jsFiddle中的<form>元素。没有</form>标记。

修改

根据文档,任何ajax()都应该放在submitHandler方法中的.validate()函数内。

换句话说,您正在使用click处理程序破坏验证插件。

  

我需要验证域字段是否正确以及占位符字段是否具有值。两者都为真后,将显示“提交”按钮。

那么为什么要在domainChk规则中显示提交按钮?一旦通过此规则,您就会显示带$(".submit").show()的按钮。< / p>

您通常会使用.valid()方法来测试表单并显示/隐藏按钮。

$('input[type="text"]').on('click keyup blur', function() {
    if ($('#form').valid()) {
        $(".submit").show();
    } else {
        $(".submit").hide();
    }
});

这更接近应该如何:http://jsfiddle.net/e04rca0t/2/