1

我一直在尝试使用 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'

这个库是否处于可用状态,还是我在浪费时间?

4

2 回答 2

0

你的代码: alert( MyForm['valid'] );

那是什么语法?

你有没有尝试过: alert( $('#MyForm').valid() );

演示:http: //jsfiddle.net/bscTU/

引用操作:

这个库是否处于可用状态,还是我在浪费时间?

这是迄今为止最广泛使用的 jQuery 验证插件。它的开发人员是 jQuery 和 jQuery UI 开发团队的成员。因此,尽管存在任何用户或文档问题,但它非常可靠。

为什么要将onblur事件添加到您的各个字段?默认情况下,jQuery Validate 插件已经启用了onfocusout验证。演示演示:http onfocusout: //jsfiddle.net/WgyW5/

于 2013-07-15T20:26:53.640 回答
0

答案是使用Parsley.js。我让它在下载后的五分钟内进行可用验证。

一些自定义验证内容有一些限制(例如,动态生成错误消息是一个奇怪的麻烦,例如(例如,如果您添加一个自定义验证器来比较两个字段的值,那么要引用用户可理解的字段名称) (更新:简单——当然,您可以在 HTML 中执行每个字段的自定义错误消息!))),但到目前为止我真的很喜欢它。例如,编写一个使用 moment.js 来验证任意日期格式的自定义验证器是微不足道的。

于 2013-07-17T21:24:59.837 回答