Html 与当前日期相关的信用卡日期验证

Html 与当前日期相关的信用卡日期验证,html,validation,javascript,Html,Validation,Javascript,下面的代码工作正常。我只想分别验证信用卡的月份和年份(mm/yyyy) 问题是下面的代码应该考虑当前日期。例如,如果键入05/2013,下面的代码将接受该日期并提交表单,但从逻辑上讲,日期05/2013已过期,因此它应显示一条消息,说明信用卡日期已过期 换句话说,验证应该通过当前或未来的日期,而不是过去的日期 <script type="text/javascript"> function validate(payment_form){ var error="

下面的代码工作正常。我只想分别验证信用卡的月份和年份(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>

功能验证(付款单){
var误差=”;
如果(付款形式信用卡exp.value.length==0){
document.getElementById(“信用卡exp错误”).innerHTML=“输入信用卡到期日”;
错误+=错误;
}否则{
var datereg=/^(0[1-9]| 1[012])[-/.](19[124; 20)\d\d+$/;
if(!datereg.测试(付款形式信用卡经验值)){
document.getElementById(“信用卡exp错误”).innerHTML=“输入有效日期”;
错误+=错误;
}
否则{
document.getElementById(“信用卡exp错误”).innerHTML=“”;
错误+=“”;
}
}
如果(错误==“”){
返回true;
}
否则{
返回false;
}
}
函数为数字(strString)
{
var strValidChars=“0123456789-”;
var-strChar;
var blnResult=真;
if(strString.length==0)返回false;
对于(i=0;i
谢谢,
Haan使用javascript日期对象。例如:

var currentDate = new Date(); //this returns the current datetime
//Clear all the other date parts.
currentDate.setDate(0);
currentDate.setHours(0);
currentDate.setMinutes(0);
currentDate.setSeconds(0);
currentDate.setMilliseconds(0);


var year = 2013;
var month = 6;
//I hardcode year and month (you get year and month from user)
var dateToCheck = new Date(year,month,0,0,0,0,0);

// Check like this:
if (dateToCheck.getTime() < currentDate.getTime()){
   //invalid date
}
var currentDate=新日期()//这将返回当前日期时间
//清除所有其他日期部分。
currentDate.setDate(0);
currentDate.setHours(0);
currentDate.setMinutes(0);
currentDate.setSeconds(0);
currentDate.setmillizes(0);
风险值年份=2013年;
var月=6;
//I硬编码年和月(您从用户处获得年和月)
var dateToCheck=新日期(年、月、0,0,0,0);
//检查如下:
if(dateToCheck.getTime()
在您的情况下,在代码中再添加1个if,如下所示:

  function validate(payment_form){

       if(payment_form.credit_card_exp.value.length==0){
           document.getElementById("credit_card_exp_error").innerHTML="Enter Credit Card Expiry Date";
           return false;
       }

       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";
           return false;
        }

        var currentDate = new Date(); //this returns the current datetime
        //Clear all the other date parts.
        currentDate.setDate(0);
        currentDate.setHours(0);
        currentDate.setMinutes(0);
        currentDate.setSeconds(0);
        currentDate.setMilliseconds(0);   

        var year = parseInt(payment_form.credit_card_exp.value.split('/')[1]);
        var month = parseInt(payment_form.credit_card_exp.value.split('/')[0]);

        var dateToCheck = new Date(year,month,0,0,0,0,0);

        if (dateToCheck.getTime() < currentDate.getTime()){
           //invalid date
            return false;
        } 

        document.getElementById("credit_card_exp_error").innerHTML="";
        return true; 
  }
功能验证(付款单){
如果(付款形式信用卡exp.value.length==0){
document.getElementById(“信用卡exp错误”).innerHTML=“输入信用卡到期日”;
返回false;
}
var datereg=/^(0[1-9]| 1[012])[-/.](19[124; 20)\d\d+$/;
if(!datereg.测试(付款形式信用卡经验值)){
document.getElementById(“信用卡exp错误”).innerHTML=“输入有效日期”;
返回false;
}
var currentDate=new Date();//返回当前日期时间
//清除所有其他日期部分。
currentDate.setDate(0);
currentDate.setHours(0);
currentDate.setMinutes(0);
currentDate.setSeconds(0);
currentDate.setmillizes(0);
var year=parseInt(付款形式信用卡经验值分割('/')[1]);
var month=parseInt(付款形式信用卡经验值拆分('/')[0]);
var dateToCheck=新日期(年、月、0,0,0,0);
if(dateToCheck.getTime()
如果使用jQuery验证,可以将其用于mm/yy格式。我认为您可以轻松地将其修改为mm/yyyy格式

$.validator.addMethod("card_expiry", function (value, element) {
return checkExpire(value);}, "Invalid expiry date");


function checkExpire(value) {
    var today = new Date();
    var year = value.substring(value.indexOf('/') + 1, 5);
    var month = value.substring(0, value.indexOf('/'));
    var expDate = new Date('20' + year, (month)); // JS Date Month is 0-11 not 1-12 replace parameters with year and month
    if (parseInt(month) > 12) {
        return false;
    } else if (today.getTime() > expDate.getTime()) {
    return false;
    } else if (/^((0[1-9])|(1[0-2]))\/(\d{2})$/i.test(value) == false) {
        return false;
    }

    return true;
}

并将class card_expiration添加到you元素。

khanh to-你能帮我举个例子吗:(@hjaffer2001:检查我的更新答案。我还对代码进行了重构,使其更易于维护。