【问题标题】:jquery validate add method to validate datetimejquery validate add 方法来验证日期时间
【发布时间】:2013-04-03 12:34:08
【问题描述】:

我正在使用我发现 here 的 datetimepicker 插件,它运行良好。

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

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

我在编写自定义验证方法方面需要帮助。如何拆分 date 和 time 字符串,然后执行测试以验证它们?

谢谢

【问题讨论】:

  • 您的 jsFiddle 中没有有效的日期选择器。
  • @Sparky 当我尝试浏览 DateTimePicker 插件站点时,我得到了一个禁止。有没有办法上传库而不是指向它?我猜不是。
  • 您必须找到CDN链接,否则您可以将插件的内容粘贴到JavaScript窗格中。
  • 不太确定您想从我们这里得到什么。不,作为此插件的一部分,没有任何规则已经验证日期和时间。是的,您需要编写一个您已经猜到的自定义方法。是的,我会拆分它,验证已经完成的日期部分,然后分别验证时间,同时将两个部分保持在同一个方法中。您是否正在寻求有关编写自定义方法的帮助?如果是这样,请解决您的问题。
  • 我编辑了这个问题,下次我会花更多时间在我的措辞上。我在之前的问题上也犯过同样的错误,我可以看到它是多么令人困惑。

标签: jquery jquery-ui jquery-validate datepicker


【解决方案1】:

您已经验证了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/

【讨论】:

    【解决方案2】:

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

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

    希望有帮助!

    【讨论】:

    • 设置日期和时间格式无法正确验证。我真的认为我需要一个自定义验证方法来处理复合日期和时间字符串。
    【解决方案3】:

    我可以建议你换插件吗? 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');
    

    【讨论】:

    • 我会看看那个插件,看看它是否符合我的需要。谢谢
    • @Wartickler- 库仍处于 Alpha 状态。它看起来不错,但我想要更成熟的东西。谢谢
    • 这是 Javascript! (尽管是 jQuery 风格的)你还需要多成熟! (O;
    • 我听到了,但我仍然不想追查错误只是发现它是一个 Alpha 库导致我的困境。我会密切关注它的测试版或稳定状态:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多