【问题标题】:jquery datepicker allows date less than minDatejquery datepicker 允许日期小于 minDate
【发布时间】:2012-07-01 13:44:49
【问题描述】:

我有一个日期选择器,它不能通过编辑框允许今天之前的日期。

var dateOptions = { 
  dateFormat: "mm/dd/yy", 
  constrainInput: true, 
  gotoCurrent: true, 
  minDate: new Date()
};

$('.date').datepicker(dateOptions);
$('.date').datepicker('setDate', new Date());

在 html 中它被实现为:

<label class="text14"><strong>Depart</strong></label>
<input type="text" id="tbDTimeOne" maxlength="10" size="10" name="tbDTimeOne" class="colum130 date" /> <img src="images/calendar.png" style="margin-left:-25px;" />

好的,这就是发生的事情。页面被渲染,onready 函数被调用,日期输入被设置为今天的日期,用户选项卡/点击日期输入,日历弹出,用户通过键盘编辑现有日期并将其设置为之前的日期今天,用户标签到下一个字段。接受并显示的输入是 minDate 之前的日期。

解决办法是什么?

【问题讨论】:

  • 将输入字段设为只读

标签: jquery datepicker jquery-ui-datepicker


【解决方案1】:

日期选择器不限制键盘输入(请参阅http://bugs.jqueryui.com/ticket/6917

$('.date').attr('readonly', 'readonly');

这将是一个解决方案,但是您将失去手动输入文本的可能性。 如果您需要保留此功能,您仍然可以验证输入 http://keith-wood.name/uiDatepickerValidation.html

【讨论】:

  • 谢谢。使用 minDate 和验证器似乎是唯一真正的解决方案。令我惊讶的是,当用户尝试输入小于 minDate 的日期或最低限度地验证 onClose 或提供回调时,jquery 不仅会发出哔哔声。
【解决方案2】:

【讨论】:

  • 我们已经在设置 ​​minDate。键盘输入显然被忽略(未验证)。
【解决方案3】:

另一个可能的选择是使用输入掩码。使用输入/jQuery,您可以使用 .Mask 原型并强制用户输入您正在寻找的有效日期格式。您还可以使用 moment.js 库来使用自定义的验证组合。

$(".someClass").mask("00/00/0000"); 

这将强制日期为 01/01/2017,而不是 1/1/1,这会使 JS 中的日期值混淆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2020-12-20
    • 2013-06-23
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多