2012-07-01 184 views
2

我有一個日期選擇器,它不能允許在今天的威盛編輯框之前的日期。jquery datepicker允許日期小於minDate

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;" /> 

OK,所以這裏發生了什麼。頁面被渲染,onready函數被調用,日期輸入被設置爲今天的日期,用戶標籤/點擊日期輸入,日曆彈出,用戶通過鍵盤編輯現有日期,並將其設置爲今天,用戶標籤到下一個字段。接受並顯示的輸入是minDate之前的日期。

這是什麼解決方案?

+1

使輸入字段爲只讀 –

回答

1

的日期選擇不限制鍵盤輸入(見http://bugs.jqueryui.com/ticket/6917

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

將是一個解決方案,但那麼你將失去手工輸入文本的可能性。 如果您需要保持此功能,您仍然可以驗證輸入 http://keith-wood.name/uiDatepickerValidation.html

+0

謝謝。使用minDate和驗證器似乎是唯一真正的解決方案。我很驚訝,當用戶嘗試輸入小於minDate的日期或最小化驗證onClose或提供回調時,jquery不會發出嗶嗶聲。 – ppetree

0

另一種可能的選擇是使用輸入掩碼。通過輸入/ jQuery,您可以使用.Mask原型,並強制用戶輸入您要查找的有效日期格式。您也可以使用moment.js庫來使用自定義的驗證組合。

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

這將強制日期爲01/01/2017,而不是1/1/1,這會導致日期值在JS中混淆。