jQuery验证对两个字段不起作用

jQuery validate not working for two fields

本文关键字:两个 字段 不起作用 验证 jQuery      更新时间:2023-09-26

我需要验证域字段是否正确,占位符字段是否有值。一旦两者都为true, Submit按钮就会显示出来。使用jQuery validate,我可以检查域名是否正确,但它没有验证占位符字段。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:链接

playerClass规则未被应用

您的第二个字段,name="playerClass"没有被验证,因为您没有对它应用验证规则。在您的jsFiddle或OP中没有这样的规则称为playerClass,并且您在jsFiddle中没有对playerClass字段应用任何规则。

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

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


编辑:

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

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


我需要验证域字段是否正确,占位符字段是否有值。一旦两者都为true, Submit按钮就会显示出来。

那么为什么要在domainChk规则中显示提交按钮呢?一旦该规则通过,您将显示带有$(".submit").show()的按钮。

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

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

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