jQuery验证器方法在移动设备上的工作方式不同

时间:2013-01-04 22:14:28

标签: javascript regex jquery-validate

阅读底部的编辑2
原帖:

我有这个jQuery验证器方法来检查有效的YYYY-MM-DD日期:

$.validator.addMethod("myDate", function(value, element){

    var validformat = /^\d\d\d\d\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/;
    return validformat.test(value);

}, "Please enter a valid YYYY-MM-DD date");

它在我的计算机上正常工作 - 在预期时返回false,在预期时返回true。但是,在我的Android手机上它总是返回false - 输入总是显示“请输入有效的YYYY-MM-DD日期”,即使日期有效。

任何正则表达式方法(例如.test())在Android(以及可能的其他手机)上的工作方式是否有所不同,或者这是一个jQuery Validator错误?


编辑:我尝试将validformat.test(value)更改为value.match(validformat),结果相同 - 适用于计算机,而非手机。


编辑2 :甚至可以在方法中对其他内容进行评论,输入return true;仍然会在我的手机上产生错误。绝对是一个jQuery验证器问题。需要解决方法!

1 个答案:

答案 0 :(得分:1)

我刚刚查看了Android 2.3手机。它运作得很好。

因此,我只将它归咎于Android 2.2。所以这是我的小修复:

$("#myform").validate({
...
    <?php
    //only print out the rule into the JS if it's not Android 2.2
    if(!strpos($_SERVER['HTTP_USER_AGENT'], "Android 2.2"))
        print "myDate: true, \n";
    ?>

烦人的黑客:)