jquery 验证不适用于显示 none 尽管我在忽略中给出了 class 名称

jquery validation not working for display none though i gave class name in the ignore

  1. 目前正在处理很棒的 jQuery 验证表单 两个单选按钮,两个下拉按钮和一个按钮最初 用户单击安全和下一步按钮错误消息显示你有 缺少一个字段,错误 class 适用于特定 下拉
  2. 如果用户 select 第二个单选按钮 Post 仍然毕业,错误消息将显示您缺少一个字段,因为我没有 selected 任何一个中的值下拉。如果我 select 编辑了下拉菜单中 PG 部分的值,错误消息应该也会出现在 UG 中。

这是我当前的 jquery 代码,我尝试在忽略 属性

中使用 class 名称
  $(".basicForm").validate({
   //ignore: "input[type='select']:hidden",

   ignore: "slt_mjrpg",
     onkeyup: false,
        showErrors: function (errorMap, errorList) {
        var errors = this.numberOfInvalids();

        if (errors) {
            var message = errors === 0 ? 'You missed 1 field. It has been highlighted' : 'You have missed ' + errors + ' fields. Please fill the highlited field before submit.';
            $("#error_message").html(message);
            $(".error_msge").show();
        } else {
            $(".error_msge").hide();
        }
        this.defaultShowErrors();
    },
   // errorClass: "errRed",
    errorPlacement: function () {
        return false;
    },
    highlight: function (element) {

        if ($(element).is(":hidden"))  {

        } else {
            $(element).addClass('errRed');
            $('#imageUploadForm').addClass('errRed');
            if($(element)[0].type=="file"){
               $("#upload_error").text('Please upload only jpeg').css("color","red");                             }
        }
        $(element).prevAll('label').find('span.required-star').addClass('text-error-red').removeClass('text-error-black');            
    },


    unhighlight: function (element) {

        if ($(element).is(':radio')) {
        } else {
            $(element).removeClass('errRed');
            //$('#imageUploadForm').closest('.choose_file').removeClass('errRed');
        }
        $(element).prevAll('label').find('span.required-star').addClass('text-error-black').removeClass('text-error-red');

    },

    rules: {
        /*1*/sel_sem:"required",
        /*2*/txt_Fname: "required",
        /*3*/txt_Lname: "required",
        /*5*/txt_Mfname: "required",
        /*6*/txt_Mlname: "required",
        /*7*/txt_dob: {
            required: true,
            date: true
        },
        /*9*/sel_ms:"required",
        /*10*/sel_rg:"required",  
        /*11*/txt_Pptnum: "required",
        /*12*/country:"required",
        /*13*/txt_Emirat:"required",
        /*14*/txt_Pptnum: "required",
        /*15*/ipt_nation:"required",
        /*16*/txt_Pi:"required",
        /*17*/txt_Idt:"required",
        /*18*/txt_Epdt:"required",
        /*22*/ipt_city:"required",
        /*23*/txt_Emd: {
            required: true,
            email: true
        },
        /*24*/sel_phntype:"required",
        /*25*/txt_CC:{
            required: true,
            number:true,
            maxlength:3
        },
        /*26*/txt_Pno:{
             required: true,
            number:true
        },
        /*27*/slt_mjr:"required",
        /*28*/slt_mjrpg:"required",//this validation will display only when pg radio button selected
        /*29*/slt_evt:"required"

    },

});

这是fiddle link

提前致谢

您似乎对如何使用 ignore 感到困惑。 ignore 选项告诉插件 "ignore" 验证元素。换句话说,如果你将它设置为 input[type='text']:hidden,那么所有同样被隐藏的 type='text' 元素将被忽略。

但是,你把你的设置成type='select'就没有了

如果要忽略隐藏的 select 元素,请将其设置为 select:hidden

ignore: "select:hidden"

编辑:

查看 jsFiddle 后...

  1. 您不需要使用 ignore 选项,因为 any/all 隐藏字段默认已被忽略。

  2. 您在第二个 select 元素的第一个 option 上有一个 value="0"。为了使 required 验证有效,必须将此 设置为 value=""

现在正在运行:http://jsfiddle.net/c0d1wde3/2/