我是经典 ASP 和 javascript 的新手。一旦用户在文本框中输入日期,我正在尝试验证日期是否为 mm/dd/yyyy 格式。但是每次我在日期字段中输入两个数字时,它都会触发日期验证(validateExpFromDt)并说这是一个无效的日期。我知道这与触发 javascript 函数的 OnKeyUp 事件有关,但相同的事件适用于帐号的不同文本字段(validateAccNum(this))。如何仅在用户输入完整日期和不只是1个数字?这是asp片段
<td width="145" align="left" class="text">
<input type="text" name="txtAccountNum1" value="<%=strPolNum1%>" size='5' align='RIGHT' maxlength="6" onFocus="select()" onKeyUp="return autoTab(this, 6, event), validateAcctNum(this);" tabindex="1" >
</td>
<td width="145" align="left" class="text">
<input type="text" name="txtExpFromDt1" value="<%=strExpFromDt1%>" size='9' align='left' maxlength="10" onFocus="select()" onKeyUp="return autoTab(this, 10, event), validateExpFromDt(this);" tabindex="1" >
</td>
下面是被调用的 Javascript 函数:
function validateExpFromDt(inputExpFromDt) {
var validformat=/^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
var returnval=false
if (!validformat.test(inputExpFromDt.value))
alert("Invalid Date. Please ensure it is in mm/dd/yyyy format and submit again.");
else{ //Detailed check for valid date ranges
var monthfield=inputExpFromDt.value.split("/")[0]
var dayfield=inputExpFromDt.value.split("/")[1]
var yearfield=inputExpFromDt.value.split("/")[2]
var dayobj = new Date(yearfield, monthfield-1, dayfield)
if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
alert("Invalid Date. Please ensure it is in mm/dd/yyyy format and submit again.")
else
returnval=true
}
if (returnval==false)
inputExpFromDt.select();
return returnval;
}
非常感谢你的回复!