0

我正在使用 JQueryui 日期选择器。但它并不真正影响在输入字段中手动输入的值。有什么方法可以使用相同的(客户端)代码在输入字段上指定掩码/验证(当不使用数据选择器时 - 不仅仅是让日期选择器输出正确的格式)。

在 JQuery 框架中执行此操作的最一致的方法是什么?

谢谢

评论

  1. 似乎 jQuery 对输入施加了一些限制(即我只能输入数字-掩码“yymmdd”),所以主要是获得验证。
4

4 回答 4

0

您可以使用 datepicker 的 formatDate 选项:http: //docs.jquery.com/UI/Datepicker/formatDate

于 2009-03-25T09:30:22.263 回答
0

使用jQuery 验证插件。它与 UI 日期选择器共存;我们在我们的应用程序中这样做。请注意,默认日期验证器不会标记明显无效的日期,例如“2009 年 2 月 40 日”,因为它使用 JavaScript 日期解析器,这对于它接受的内容有点松懈。但是用你自己的一个替换默认验证器真的很容易。

于 2009-03-25T12:38:03.967 回答
0

假设您使用的是 Validate 插件,您可以编写一个自定义规则,重新实现 ui.Datepicker 自己的逻辑来决定哪些日期是可选的。我今天不得不写这篇文章,并认为其他人可以从知道如何中受益:

jQuery.validator.addMethod("vdate", function(value, element) {
    // Datepicker's internal method for choosing selectable ported to a custom validator method.
    // All criteria are the same, except othermonth is omitted.
    var inst =          $.data(element,'datepicker'); // instance data used internally by datepicker's functions
    var printDate =     $(element).datepicker("getDate");
    var minDate =       $.datepicker["_getMinMaxDate"](inst, 'min', true);
    var maxDate =       $.datepicker["_getMinMaxDate"](inst, 'max');
    var beforeShowDay = $.datepicker["_optionDatepicker"](element,'beforeShowDay');
    var daySettings =   (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
    var unselectable =  (!daySettings[0] || (minDate !=null && (printDate < minDate)) || (maxDate !=null && (printDate > maxDate)));
    return (this.optional(element) || !unselectable);
}, "Please choose a valid date");

这种特殊的 addMethod 具有单独检查每个字段的优势,因此如果您有多个日期选择器共享类名“vdate”但可能具有不同的 minDate/maxDate/beforeShowDay 设置,验证将检查并遵循每个日期选择器自己的规则。

此外,如果你为 beforeShowDay 编写了一个复杂的函数,它不包括周末、数字为素数的日子、你妻子的生日和每个月的最后一天,只要它在 ui.Datepicker 中工作,Validate 就会识别所有这些无效日期也是如此。

于 2010-03-26T23:01:50.810 回答
0

你有什么理由不能做最简单的事情吗?

挂钩一个事件,例如在日期字段的模糊上,并检查如下值:

  1. 将输入的长度与格式进行比较。
  2. 解析日期并尝试创建一个日期对象以验证日期是否为实际日期。
于 2015-06-24T16:11:11.497 回答