jquery.validate、jquery.metadata 和 html5 数据
我正在考虑使用 html5 data- 属性将验证规则传递给 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] 未定义
我确实在带有数据的元素上执行了metadata() -validate 属性,我得到了一个名为 validate 的对象,其中设置了我的属性,所以我知道元数据正在查找该属性并从中加载,但验证插件似乎无法处理它。如果我返回 class="{validate:{...}}" 并注释掉配置元数据以使用 HTML 5 的行,那么一切都会正常工作。
我是否做错了什么,或者验证和/或元数据插件是否存在问题?
I'm looking into using the html5 data- attributes to pass the validation rules to jquery.validate as a stop gap until the plugin is updated with HTML5 support. I'm using jquery 1.4.2, jquery.validate 1.7 and jquery.validate 2.1. In my HTML I'm using code such as this:
<input name="foo" type="text" data-validate="{required:true,digits:true}" />
In my jQuery I'm doing the following:
<script type="text/javascript">
$.metadata.setType ("html5");
$(function ()
{
$('#myForm').validate ({debug:true});
});
</script>
This just causes an error message, validator.methods[method] is undefined
I did do a metadata() on the element with the data-validate attribute, and I got an object returned named validate with my attributes set in it, so I know metadata is finding the attribute and loading from it, but the validate plugin can't seem to handle it. If I go back to class="{validate:{...}}" and comment out the line that configures metadata to use HTML 5, it all works as it should.
Am I doing something wrong, or is there an issue with the validate and/or metadata plugins?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果有人使用较新版本的 jQuery、jQuery Validate 和 jQuery 元数据插件遇到此问题,我找到的将这些一起使用的所有文档都已过时。虽然 jQuery 验证插件仍然可以使用 jQuery 元数据,但较新版本的 jQuery 元数据不再支持“html5”作为类型,因为 jQuery 现在原生支持 HTML5 数据属性作为元数据源。但是,jQuery Validate 尚未更新以使用此功能。
解决方案(至少在 jQuery Validate 更新为支持使用 data- 属性对元数据的内置支持之前)是使用“attr”类型并直接指向您的 data- 属性。例如:
注意,不需要传递“meta”标签,因为元数据库直接转到正确的属性来读取值。这是使用所有库的更新版本的修改后的 jsFiddle:
http://jsfiddle.net/Wcu4L/
In case anyone runs across this using a newer version of jQuery, jQuery Validate and the jQuery metadata plugin, all of the documentation I have found for using these together is out of date. While the jQuery Validate plugin can still make use of jQuery Metadata, the newer versions of jQuery Metadata don't support "html5" as a type anymore because jQuery now natively supports HTML5 data- attributes as a source of metadata. However, jQuery Validate has not been updated to use this.
The solution for this (at least until jQuery Validate is updated to support the built-in support for metadata using data- attributes is to use the 'attr' type and point directly to your data- attribute. For instance:
Notice there is no need to pass the "meta" tag because the metadata library is directly going to the correct attribute to read the values. Here is a modified jsFiddle using updated versions of all of the libraries:
http://jsfiddle.net/Wcu4L/
尝试:
http://jsfiddle.net/petersendidit/5YND2/
Try:
http://jsfiddle.net/petersendidit/5YND2/