以下代码工作正常。我只想分别验证信用卡的月份和年份(mm/yyyy)。
问题是下面的代码应该考虑到当前日期是什么。例如,如果您输入 05/2013,下面的代码会接受它并提交表单,但从逻辑上讲,日期 05/2013 已过期,因此它应该显示一条消息,说明信用卡日期已过期。
换句话说,验证应该通过当前或未来的日期,而不是过去的日期。
<script type="text/javascript">
function validate(payment_form){
var error="";
if(payment_form.credit_card_exp.value.length==0){
document.getElementById("credit_card_exp_error").innerHTML="Enter Credit Card Expiry Date";
error+= false;
}else{
var datereg = /^(0[1-9]|1[012])[- /.](19|20)\d\d+$/;
if (!datereg.test(payment_form.credit_card_exp.value)) {
document.getElementById("credit_card_exp_error").innerHTML="Enter valid Date";
error+= false;
}
else{
document.getElementById("credit_card_exp_error").innerHTML="";
error+= "";
}
}
if(error==""){
return true;
}
else{
return false;
}
}
function IsNumeric(strString)
{
var strValidChars = "0123456789.-";
var strChar;
var blnResult = true;
if (strString.length == 0) return false;
for (i = 0; i < strString.length && blnResult == true; i++)
{
strChar = strString.charAt(i);
if (strValidChars.indexOf(strChar) == -1)
{
blnResult = false;
}
}
return blnResult;
}
</script>
<form id='payment-form' name="payment_form" onSubmit="return validate(this)" action='response.php' method='POST'>
<table border="0" cellpadding="0" cellspacing="0" style="font-size:12px;">
<tr>
<td valign="top" align="left">Credit Card Expiry (mm/yyyy)</td>
<td valign="top" align="left" height="30">
<input type="text" placeholder="12/2015" value="" id="credit_card_exp" name="credit_card_exp"> <br />
<label class="error" id="credit_card_exp_error"></label>
</td>
</tr>
<tr>
<td colspan="2" align="center" style="padding-top:10px;"><input type="submit" value="PAYMENT" class="login" id="payment" name="payment"></td>
</tr>
</table>
</form>
谢谢,韩