2013-03-20 98 views
2

嗨有一個文本框的日期選擇器。用戶可以從日期選擇器中選擇日期,也可以通過在文本框中輸入來手動輸入日期。如果日期是手動輸入的,我如何驗證輸入是否在日期選擇器的日期範圍內?請幫忙。例如我的日期選擇器的最大年份只有1995年,所以用戶不允許輸入日期,如01/25/1996。驗證日期從文本框對日期選擇器日期範圍輸入

HTML

Date of Birth (MM/DD/YYYY): 
<input type="text" class="datepicker minimumSize" 
name="BirthDate" id="BirthDate"/> 

的JavaScript

var d = new Date(); 
var year = d.getFullYear() - 18; 
d.setFullYear(year); 
$('#BirthDate').datepicker({ 
    changeYear: true, 
    changeMonth: true, 
    yearRange: '1920:' + year + '', 
    defaultDate: d}); 

$('#BirthDate').blur(function(){ 
//Validate input 
}); 

的jsfiddle http://jsfiddle.net/jobzky/wUpQG/

回答

2

這完美的作品給我。

首先我必須驗證日期語法。假設日期是有效的日期。然後,你可以做到這一點。

var from_date_monthfield = valid_from.split("/")[1]; 
    var from_date_dayfield = valid_from.split("/")[0]; 
    var from_date_yearfield = valid_from.split("/")[2]; 

//上述拆分取決於你的日期格式

var from_date = new Date(from_date_yearfield, from_date_monthfield-1, from_date_dayfield); 

    var cur_date = new Date(); 
    if(!(from_date > cur_date.setDate(cur_date.getDate() - 1))) // set date as 1995 here and your logic here 
    { 
    return false; 
    } 

    return true; 
} 
2

可以使用輸入元件的readonly屬性以防止用戶手動例如輸入日期

<input type="text" class="datepicker minimumSize" 
name="BirthDate" id="BirthDate" readonly/> 
+0

嗨,感謝分享,但這不是我的應用程序的行爲。用戶可以通過在文本框中輸入輸入來手動輸入日期。如果只讀用戶無法再輸入 – 2013-03-20 06:19:53

+1

這可能是一個可用性問題。有些用戶寧願輸入他們的日期,也不願意使用日曆日期選擇器。 – Lebowski156 2015-07-20 18:13:37