我有一个日期选择器,它不能允许今天之前的日期通过编辑框。
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之前的日期。
这是什么解决方案?
答案 0 :(得分:1)
Datepicker不限制键盘输入(请参阅http://bugs.jqueryui.com/ticket/6917)
$('.date').attr('readonly', 'readonly');
将是一个解决方案,但是你将失去用手输入文本的可能性。 如果您需要保留此功能,您仍然可以验证输入 http://keith-wood.name/uiDatepickerValidation.html
答案 1 :(得分:0)
http://docs.jquery.com/UI/Datepicker#option-minDate
minDate: new Date(2011,12,30)
答案 2 :(得分:0)
另一个可能的选择是使用输入掩码。使用input / jQuery,您可以使用.Mask原型并强制用户输入您正在寻找的有效日期格式。您还可以使用moment.js库来使用自定义的验证组合。
$(".someClass").mask("00/00/0000");
这将强制日期为01/01/2017,而不是1/1/1,这会使JS中的日期值混淆。