我正在尝试使用jquery日历datepicker验证输入文本框。 datepicker本身运行良好,但我不确定如何验证输入是mm / dd / yyyy形式。这是以这种方式设置的,因为内容是从另一个jsp加载的。
这是输入。
<table class="style2" width="100%">
<tr>
<td width="291" valign="middle">
<p>Date: <input type="text" class="followup_three_02" id="followup_three_02" maxlength="10" size="10" value="<%=session.getAttribute("followup_three_02")==null?"":session.getAttribute("followup_three_02")%>" />
</td>
<td width="246">
</td>
</tr>
</table>
和datepicker
function showContent(pos,direction){
$("#area").hide("slide", { direction: direction=="left"?"right":"left"}, 500,
function(){
$("#area").load("3month_forms.jsp #area" + pos, function(){
$("#area").show("slide", { direction: direction }, 500);
if(pos==2){
$(function(){
var pickerOpts = {
showOn: "button",
buttonImage: "/images/calendar.png",
buttonImageOnly: true,
changeMonth: true,
changeYear: true,
yearRange: "-60:+0"
};
$("#followup_three_02").datepicker(pickerOpts);
});
}
});
}
);
}
我的验证器不正确。
}else if(question_pos==2){
if($('#followup_three_02').val() == ( Date.parse("4/8/2013") > Date.now())){
alert("What is your baby's birthdate? ");
return false;
答案 0 :(得分:1)
这是一个条件:
Date.parse("4/8/2013") > Date.now()
它返回true或false!
val()
将始终返回一个字符串,在这种情况下,可能是一个字符串日期,如5/5/2013
,并将其与true或false进行比较,始终为false。
if($('#followup_three_02').val() == ( Date.parse("4/8/2013") > Date.now())){
// if string ^^^^^^^^^ equals true or false ^^^^^^ == always false
而是尝试:
var given_date = Date.parse( $('#followup_three_02').val() ),
compare_date = Date.parse("4/8/2013");
if ( given_date.getTime() > compare_date.getTime() ) { ... }
因为你正在使用jQuery datepicker:
var given_date = $("#followup_three_02").datepicker('getDate'),
compare_date = $.datepicker.parseDate('m/d/yy', '04/08/2013', {});
if ( given_date > compare_date ) { ... }
答案 1 :(得分:0)
调用此功能。如果日期不是mm / dd / yyyy格式,则返回false。
function isDate(txtDate) {
var currVal = txtDate;
if (currVal === '') {
return false;
}
//Declare Regex
var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
var dtArray = currVal.match(rxDatePattern); // is format OK?
if (dtArray === null) {
return false;
}
//Checks for mm/dd/yyyy format.
dtMonth = dtArray[3];
dtDay = dtArray[1];
dtYear = dtArray[5];
if (dtMonth < 1 || dtMonth > 12) {
return false;
}
else if (dtDay < 1 || dtDay > 31) {
return false;
}
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) {
return false;
}
else if (dtMonth == 2) {
var isleap = (dtYear % 4 === 0 && (dtYear % 100 !== 0 || dtYear % 400 === 0));
if (dtDay > 29 || (dtDay == 29 && !isleap)) {
return false;
}
}
else {
return true;
}
}