jquery.validate、jquery.metadata 和 html5 数据

标签 jquery html metadata validation

我正在研究使用 html5 数据属性将验证规则传递给 jquery.validate 作为权宜之计,直到插件更新为 HTML5 支持。我正在使用 jquery 1.4.2、jquery.validate 1.7 和 jquery.validate 2.1。在我的 HTML 中,我使用如下代码:

<input name="foo" type="text" data-validate="{required:true,digits:true}" />

在我的 jQuery 中,我正在执行以下操作:

<script type="text/javascript">
$.metadata.setType ("html5");
$(function ()
{
    $('#myForm').validate ({debug:true});
});
</script>

这只会导致错误消息,validator.methods[method] 未定义

我确实在具有 data-validate 属性的元素上执行了 metadata(),我得到了一个名为 validate 的返回对象,其中设置了我的属性,所以我知道元数据正在查找属性并从中加载,但是验证插件似乎无法处理它。如果我返回 class="{validate:{...}}"并注释掉配置元数据以使用 HTML 5 的行,它就会按预期工作。

是我做错了什么,还是验证和/或元数据插件有问题?

最佳答案

如果有人使用较新版本的 jQuery、jQuery Validate 和 jQuery 元数据插件遇到此问题,我找到的所有将这些一起使用的文档都已过时。虽然 jQuery Validate 插件仍然可以使用 jQuery 元数据,但较新版本的 jQuery 元数据不再支持“html5”作为一种类型,因为 jQuery 现在原生支持 HTML5 数据属性作为元数据的来源。但是,jQuery Validate 尚未更新为使用它。

这个解决方案(至少在更新 jQuery Validate 以支持使用 data- 属性的元数据的内置支持之前)是使用 'attr' 类型并直接指向您的 data- 属性。例如:

$.metadata.setType("attr", "data-validate");
$("form").validate();

请注意,无需传递“meta”标记,因为元数据库会直接转到正确的属性以读取值。这是使用所有库的更新版本的修改后的 jsFiddle:

http://jsfiddle.net/Wcu4L/

关于jquery.validate、jquery.metadata 和 html5 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4105959/

相关文章:

php - 从 WooCommerce 中的订单项目中获取变体的自定义值

jquery - 如何从 AngularJS 动态表单中删除元素?

jquery - 将菜单添加到 jquery Accordion

html - 强制导航栏不与页内导航内容重叠

png - PNG是否支持诸如作者,相机型号等元数据字段?

mysql - 未规范化的表格适用于哪些地方?

javascript - 在 jQuery 中将值从一个输入传递到另一个输入

javascript - jquery循环不会暂停

javascript - js 函数根据调用方式的不同而表现不同

html - Chrome 43 中文本偶尔会溢出到 div 之外