Gor*_*onM 5 html validation jquery html5 metadata
我正在研究使用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}" />
Run Code Online (Sandbox Code Playgroud)
在我的jQuery中,我正在做以下事情:
<script type="text/javascript">
$.metadata.setType ("html5");
$(function ()
{
$('#myForm').validate ({debug:true});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这只会导致错误消息,validator.methods [method]未定义
我确实在元素上使用了data-validate属性做了一个元数据(),我得到了一个名为validate的对象,其中设置了我的属性,所以我知道元数据是找到属性并从中加载,但是validate插件可以似乎处理它.如果我回到class ="{validate:{...}}"并注释掉配置元数据以使用HTML 5的行,那么它都可以正常工作.
我做错了什么,或者验证和/或元数据插件是否存在问题?
如果有人使用更新版本的jQuery,jQuery Validate和jQuery元数据插件来运行这个,我发现使用这些文档的所有文档都已过时.虽然jQuery验证插件仍然可以使用jQuery的元数据,元数据的jQuery的较新版本不支持"HTML5"作为一种类型了,因为现在的jQuery本身就支持HTML5数据 - 属性作为元数据的来源.但是,jQuery Validate尚未更新以使用它.
针对此的解决方案(至少在更新jQuery Validate以支持使用数据属性对元数据的内置支持之前)是使用'attr'类型并直接指向您的数据属性.例如:
$.metadata.setType("attr", "data-validate");
$("form").validate();
Run Code Online (Sandbox Code Playgroud)
请注意,不需要传递"meta"标记,因为元数据库直接转到正确的属性来读取值.这是一个使用所有库的更新版本的修改过的jsFiddle:
尝试:
$.metadata.setType("html5");
$('#myForm').validate({
meta: "validate"
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/petersendidit/5YND2/