8

我正在使用我在这里找到的一个 datetimepicker 插件,它工作得很好。

现在唯一的问题是它破坏了jquery 验证插件中包含的标准日期验证,因为在输入框中的字符串末尾添加了时间。

这是我到目前为止在演示中的内容。我添加了一个验证方法来检查值是否为日期,但它不接受时间。

我需要帮助编写自定义验证方法。如何拆分dateandtime字符串然后执行测试来验证它们?

谢谢

4

3 回答 3

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/

只需将这两个函数组合到您的“日期时间”方法中。然后在空间拆分您的输入值并相应地测试每个部分。


这是一个演示,我将日期和时间方法组合在一起。它接受以下格式,yyyy/mm/dd hh:mm因此您只需稍微调整一下即可。

http://jsfiddle.net/9CdvN/2/

于 2013-04-03T15:53:02.803 回答
1

您提到的日期时间选择器说它使用 jQuery UI 的 datepicker 小部件。您可以使用 ui datepicker API,特别是dateFormat 方法来控制从小部件接收的日期格式。

您应该能够设置 datepicker 以提供验证所需格式的日期。

希望有帮助!

于 2013-04-03T12:41:12.533 回答
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');
于 2013-04-03T13:08:34.747 回答