jquery.validate dateISO:这实际上有用吗?

时间:2013-07-15 19:41:59

标签: jquery jquery-validate

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

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

2 个答案:

答案 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来验证任意日期格式的自定义验证器是微不足道的。