2013-03-20 166 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

相关问题