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

标签 javascript jquery jquery-validate

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

<div id="component_id" />

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

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

抛出以下异常:无法读取未定义的属性“nodeType”。我认为这应该是因为我在 div 上应用了验证规则。

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

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

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

最佳答案

引用OP:

“我需要使用 jQuery 验证插件验证组合框组件:jqxComboBox。该组件应用于 div。”

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

引用OP:

“此组件生成一个隐藏的输入类型来保存选定的值。我也尝试在该隐藏组件上应用验证规则,但这不起作用:当隐藏没有值时也会提交表单。”

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

但是,默认情况下,jQuery Validate 插件将忽略所有隐藏的输入元素。只需更改 ignore选项 []为了忽略“无”。设置ignore .validate() 内的选项与您的任何/所有其他选项一起调用。

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

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

关于javascript - jQuery 验证插件不验证不是表单输入的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536044/

相关文章:

javascript - 无法理解这段代码中settimeout的逻辑

javascript - jquery validate plugin - 仅当其中一个字段不为空时才验证

jquery - 如何允许 localhost URL 作为有效 URL - 在 Validate Min Js 中

css - jQuery 验证插件错误 CSS

javascript - 另一个 div 中的粘性侧边栏

jquery - 无需编写多个函数即可调整多个 div 的大小

javascript - 无法从 Storybook 中的 Vuex 商店读取内容

javascript - Selenium Java 注入(inject)新的 Javascript 函数

javascript - Webpack 中 Webpack-Manifest-Plugin 的用途

javascript - 使用 SPServices 从另一个域上的 Sharepoint 获取总列​​表项