我一直在尝试使用 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 文档页面有一个示例,其行为与我所看到的完全不同:它确实验证了实际日期值,并且它在表单提交的标签中出现错误。为什么?!他们没有给它任何我没有的参数。为什么他们会得到不同的结果?
文档非常简陋。该文档声称,当您在其上调用 validate() 以设置验证时,会为表单提供一个 valid() 方法,但在运行时它是未定义的:
// UPDATE: I had a very poor understanding of jquery when I wrote this.
alert(MyForm['validate']); // 'undefined'
这个库是否处于可用状态,还是我在浪费时间?