jQuery Validation插件 - 验证隐藏的输入并且不可见?

Gre*_*nih 61 jquery jquery-validate

如何使用jQuery Form Validation插件验证隐藏的输入和不可见的文本输入?问题是,我正在使用自动建议插件,它为所选项目生成隐藏输入:

<input id="hiddenInput" type="hidden" name="something" value="1" />
Run Code Online (Sandbox Code Playgroud)

我有2个像这样的输入(它们都只允许1个项目),我想验证并在父项中显示错误<td>.这是我到目前为止所得到的,但如果该值实际上是一个数字,它不会显示错误或提交表单.

$("#form1").validate({
        rules: {
            something: {
                number:true,
                min:1,
                required:true
            }
        }
        })
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 119

要允许验证隐藏元素,请覆盖忽略并将其设置为空字符串:

$("#form1").validate({
    ignore: "",
    rules: {
        something: {
            number:true,
            min:1,
            required:true
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这个答案仍然有效吗?我使用表单的任何"忽略"设置即使无效也会被发送.我试过忽略:[],忽略:"",忽略:':隐藏:不是(#id_myimput).始终相同的结果:我在字段上看到错误通知,但无论如何都会提交表单.删除任何"忽略"设置可修复验证. (5认同)

Emr*_*kan 27

你可以使用这样的ignore选项:

$("#form1").validate({
    ignore: "input[type='text']:hidden",
    rules: {
        something: {
            number:true,
            min:1,
            required:true
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

ignore选项的默认值是:hidden忽略所有隐藏字段和不可见字段(display: none等)

  • 仍然没有验证.我向隐藏的输入添加一个规则,并确保它无效,但它仍然提交表单,并且根本没有显示任何错误! (2认同)

CMc*_*ont 14

如果其他答案对您不起作用,请尝试此操作.它删除了表单的所有忽略,因此它将验证包括隐藏字段在内的所有内容:

$.data($('form')[0], 'validator').settings.ignore = "";
Run Code Online (Sandbox Code Playgroud)

要恢复设置以忽略隐藏字段,请使用以下内容:

$.data($('form')[0], 'validator').settings.ignore = "input[type='text']:hidden";
Run Code Online (Sandbox Code Playgroud)

您还可以使用上面的代码来回读当前值.

  • 奇怪的是,你的解决方案是*唯一一个对我有用的解决方案 - 其他答案都没有. (4认同)

小智 5

另一种验证隐藏输入的方法是:

$("#form1").validate({
        ignore: "not:hidden",
        rules: {
            something: {
                number:true,
                min:1,
                required:true
            }
        }
});
Run Code Online (Sandbox Code Playgroud)