jQuery Validate插件不验证不是表单输入的元素

时间:2014-07-02 16:09:39

标签: javascript jquery jquery-validate

我需要使用jQuery Validation Plugin验证组合框组件:jqxComboBox。此组件应用于div。所以定义

<div id="component_id" />

$( "#component_id" ).jqxComboBox({...});

$("#component_id" ).rules( "add", {
    required: true,                  
    messages:{
        required: "Field is required"
    }
});

抛出以下异常:Cannot read property 'nodeType' of undefined。我认为这应该是因为我在div上应用了验证规则。

此组件生成隐藏的输入类型以保存选定的值。我还尝试对该隐藏组件应用验证规则,但这不起作用:当隐藏时没有值提交表单。

$('input[type=hidden][name=myName]').rules( "add", {
    required: true,                  
    messages:{
        required: "Field is required"
    }
});

有人可以给我一些如何解决这个问题的提示吗?

1 个答案:

答案 0 :(得分:1)

引用OP:

&#34;我需要使用jQuery Validation Plugin验证一个组合框组件:jqxComboBox。此组件应用于div。&#34;

如您所知,您无法使用jQuery Validate来验证div。您只能验证input容器中的selecttextarea<form>元素。

引用OP:

&#34;此组件生成隐藏的输入类型以保存所选值。我还尝试对该隐藏组件应用验证规则,但这不起作用:当隐藏没有值时也提交表单。&#34;

将值放在隐藏的输入元素中是一种可接受的解决方法。

但是,默认情况下,jQuery Validate插件将忽略所有隐藏的输入元素。只需将ignore选项更改为[]即可忽略&#34;无效&#34;。在ignore来电中设置.validate()选项以及所有其他选项。

$('#yourform').validate({
    // your other options, rules and callbacks,
    ignore: []  // <- ignore nothing - validate hidden elements
});

文档http://jqueryvalidation.org/validate/#ignore