我使用的是datetimepicker插件,我发现here效果非常好。
现在唯一的问题是它打破了jquery validation plugin中包含的标准日期验证,因为输入框中字符串末尾的时间增加了。
以下是我目前在demo中的内容。我添加了一个验证方法,检查该值是否为日期,但它不接受时间。
我需要帮助编写自定义验证方法。如何拆分date
和time
字符串,然后执行测试以验证它们?
由于
答案 0 :(得分:18)
您已经对date
规则进行了验证。否则,您可以查看jQuery Validate插件以获取:
date: function( value, element ) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
},
这是我发现的用于验证字符串的time
部分的自定义方法。
$.validator.addMethod("time", function (value, element) {
return this.optional(element) || /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(value);
}, "Please enter a valid time.");
时间演示:http://jsfiddle.net/9CdvN/
只需将两个功能组合到“DateTime”方法中即可。然后在空间中分割输入值并相应地测试每个部分。
这是一个我将日期和时间结合起来的演示。时间方法在一起。它接受以下格式yyyy/mm/dd hh:mm
,因此您只需稍微调整一下。
<强> http://jsfiddle.net/9CdvN/2/ 强>
答案 1 :(得分:1)
您提到的日期时间选择器说它使用了jQuery UI的datepicker小部件。您可以使用ui datepicker API控制从窗口小部件接收的日期的格式,特别是dateFormat method。
您应该能够设置日期选择器,以提供验证所需格式的日期。
希望有所帮助!
答案 2 :(得分:1)
我建议您切换插件吗? http://www.datejs.com/有很多方法来验证日期和一些荒谬的句法糖:
// Convert text into Date
Date.parse('today');
Date.parse('t + 5 d'); // today + 5 days
Date.parse('next thursday');
Date.parse('February 20th 1973');
Date.parse('Thu, 1 July 2004 22:30:00');