jquery.validate,jquery.metadata和html5数据

时间:2010-11-05 12:50:29

标签: jquery html html5 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 [方法]未定义

我确实在带有data-validate属性的元素上做了一个元数据(),我得到了一个名为validate的对象,其中设置了我的属性,所以我知道元数据是找到属性并从中加载,但是验证插件似乎无法处理它。如果我回到class =“{validate:{...}}”并注释掉配置元数据以使用HTML 5的行,那么它都可以正常工作。

我做错了什么,或者验证和/或元数据插件是否存在问题?

2 个答案:

答案 0 :(得分:9)

如果有人使用更新版本的jQuery,jQuery Validate和jQuery元数据插件来运行,我找到的所有文档一起使用都是过时的。虽然jQuery Validate插件仍然可以使用jQuery元数据,但较新版本的jQuery Metadata不支持&#34; html5&#34;作为一种类型,因为jQuery现在本身支持HTML5数据属性作为元数据源。但是,jQuery Validate尚未更新以使用它。

此解决方案(至少在更新jQuery Validate以支持使用数据属性对元数据的内置支持之前)是使用&#39; attr&#39;类型并直接指向您的数据属性。例如:

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

请注意,没有必要传递&#34; meta&#34;标记因为元数据库直接转到正确的属性来读取值。这是一个使用所有库的更新版本的修改过的jsFiddle:

http://jsfiddle.net/Wcu4L/

答案 1 :(得分:4)

尝试:

$.metadata.setType("html5");
$('#myForm').validate({
    meta: "validate"
});

http://jsfiddle.net/petersendidit/5YND2/