Jquery 验证插件验证日期,例如 20/8/2013 Safari Bug?

标签 jquery regex validation safari jquery-validate

我使用 Jquery Validation 插件并验证事件日期,如

rules:{
       eventdate: 
       {
       required:true,   
       date: true
       }
     }

date format is like "23/August/2013" ('dd/MM/yy')

但是代码在 Safari 上失败,在 Fx、chrome、opera 上效果更好...

is it a Safari Bug or a Jquery Validation plugin bug ?

我知道 Jquery Validation 插件支持自定义验证,例如

$.validator.addMethod("customdateValidateRule", function(value, element) 
{  
_isvalidResult=****testfn()***;
return _isvalidResult;
}

我试过Custom date format with jQuery validation plugin 但没有帮助,因为它在 dd/mm/yyyy 中不适合 ('dd/MM/yy') ,而是“23/August/”的正则表达式2013”​​我不知道!

备注

1) 我使用 Datepicker(JqueryUi) 来选择日期
2) 我正在使用 Jquery 验证插件(最新),它将验证很多日期格式,它还会验证“23/August/2013”​​(我假设),但是当我在 Safari 中测试它时,它显示无效在 FX、Chrome、Opera 中显示“有效”..

最佳答案

问题是因为 Safari 无法正确处理格式。 JQuery 验证插件工具无法验证此格式(仅发生在 ChromeSafari 中)。要解决此问题,请修改验证插件。

如果您希望针对 dd/mm/yy 进行自定义,您可以这样做。

$.validator.addMethod(
   "customdateValidateRule", 
   function(value, element) {
      return value.match(/^\d{1,2}\/\d{1,2}\/\d{2}$/);
   },
      "Input a date format of dd/mm/yy:"
);

并将规则验证添加到您的表单中。

$('#myformname')
   .validate({
       rules : {
        myDate : {
          customdateValidateRule : true
        }
       }
   });

如果您想添加测试方法,您应该能够执行类似的操作..

var isdate = function(value) {
    var isvalid = /^(\d{1,2})\/(\d{1,2})\/(\d{2})?$/;   
    return isvalid.test(value);
} 

$.validator.addMethod(
   "customdateValidateRule",
   function(value, element) {
      return isdate(value);
   }
);

如果您需要正则表达式来验证dd/mm/yyyy,请将其更改为..

/^\d{1,2}\/\d{1,2}\/\d{4}$/

要验证 2013 年 8 月 23 日 的具体日期,您有几个选项。

有捷径:

/^\d{1,2}\/\b[a-zA-Z]+\/\d{4}$/

正则表达式解释:

^              the beginning of the string
 \d{1,2}       digits (0-9) (between 1 and 2 times)
  \/           look for and match '/'
   \b          the boundary between a word char (\w)
    [a-zA-Z]+  any character of: 'a' to 'z', 'A' to 'Z' (1 or more times)
  \/           look for and match '/'
  \d{4}        digits (0-9) (4 times)
$              before an optional \n, and the end of the string

漫漫长路(具体验证):

/^\d{1,2}\/\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|
                May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?|September|
                Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\/\d{4}$/

正则表达式解释:

^                     the beginning of the string
 \d{1,2}              digits (0-9) (between 1 and 2 times)
  \/                  look for and match '/'
   \b                 the boundary between a word char (\w)
    (?:               group, but do not capture:
     Jan(?:uary)?|    'Jan', group but don't capture optional 'uary', OR
     Feb(?:ruary)?|   'Feb', group but don't capture optional 'ruary', OR
     Mar(?:ch)?|      'Mar', group but don't capture optional 'ch', OR
     Apr(?:il)?|      'Apr', group but don't capture optional 'il', OR
     May|             'May', OR
     Jun(?:e)?|       'Jun', group but don't capture optional 'e', OR
     Jul(?:y)?|       'Jul', group but don't capture optional 'y', OR
     Aug(?:ust)?|     'Aug', group but don't capture optional 'ust', OR
     Sept?|           'Sep', 't' optional, OR
     September|       'September', OR
     Oct(?:ober)?|    'Oct', group but don't capture optional 'ober', OR
     Nov(?:ember)?|   'Nov', group but don't capture optional 'ember', OR
     Dec(?:ember)?    'Dec', group but don't capture optional 'ember'
    )                 end of grouping
     \/               look for and match '/'
      \d{4}           digits (0-9) (4 times)
$                     before an optional \n, and the end of the string

关于Jquery 验证插件验证日期,例如 20/8/2013 Safari Bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18426225/

相关文章:

javascript - JQuery: trigger() 不调用相关目标

javascript - Rails 上 .js.erb 文件中的 Ruby 数组到 js 数组

javascript - ThreeJS 新网格 vs 克隆

javascript - [Alphanumeric][alphanumeric.-_@] 31 个字符的正则表达式建议

regex - 如何在标签中查找报价?

regex - 提示有大量已修改和未知的 Mercurial 文件

jquery - 如何隐藏对象以开始其动画?

django - 自定义 Django 字段的验证

javascript - 在 javascript 中使用正则表达式无效组错误

validation - 将自定义验证规则添加到 Sonata User Bundle