我一直在尝试使用jquery.validate来验证其中包含日期字段的表单。我可以在模糊时对其进行正确验证:我将validateonblur属性添加到我想要执行此操作的字段中:
$("input[validateonblur]").blur(function () {
$(this.form).validate().element(this);
});
但是当我提交表单时,此时的验证仅验证必填字段。它并不关心日期字段中的垃圾类型。它完全忽略了dateISO属性,我是否将其作为HTML中的属性...
<input name="DOB" id="DOB" type="text" required dateISO="true" class="blah" />
...或者像这样:
$("#MyForm").validate( {
rules: {
DOB: {
required: true,
dateISO: true
}
} );
......或两者兼而有之。
另外,我注意到当我提交表单时,它显示弹出/工具提示错误的内容,而当我调用$(this.form).validate()。element(this);时,它表示错误一种完全不同的方式,通过在HTML中插入标签。但话说回来,他们的dateISO documentation page有一个与我所看到的完全不同的例子:它确实验证了实际的日期值,并且它在表单提交的标签中出错。为什么?!他们没有给我任何参数我不是。为什么他们会得到不同的结果?
文档非常吝啬。文档声称,当您在其上调用validate()来设置验证时,表单会被赋予valid()方法,但在运行时它是未定义的:
// UPDATE: I had a very poor understanding of jquery when I wrote this.
alert(MyForm['validate']); // 'undefined'
这个图书馆是否处于可用状态,还是我在浪费时间?
答案 0 :(得分:0)
您的代码:alert( MyForm['valid'] );
那是什么语法?
您是否尝试过:alert( $('#MyForm').valid() );
DEMO:http://jsfiddle.net/bscTU/
引用OP:
这个图书馆是否处于可用状态,还是我在浪费时间?
这是目前使用最广泛的jQuery验证插件。它的开发人员是jQuery和jQuery UI开发团队的成员。因此,尽管有任何用户或文档问题,它仍然非常可靠。
为什么要在各个字段中添加onblur
个事件? jQuery Validate插件默认已启用onfocusout
validation。演示中显示onfocusout
的演示:http://jsfiddle.net/WgyW5/
答案 1 :(得分:0)
答案是使用Parsley.js。我让它在下载后的五分钟内做了可用的验证。
某些自定义验证内容有一些限制(例如,动态生成错误消息是一种奇怪的麻烦,例如(如果添加一个比较值的自定义验证器,则引用用户可理解的字段名称)两个字段(UPDATE:简单 - 当然,您可以在HTML中执行每个字段的自定义错误消息!))),但到目前为止我真的很喜欢它。例如,编写一个使用moment.js来验证任意日期格式的自定义验证器是微不足道的。