HTML中的信用卡到期日验证

时间:2014-03-29 09:25:15

标签: javascript html

HTML code:

<tr>
    <td><label for="expiry_day">Expiry date(MM/YYYY):<span id="imp">*</span></label></td>
    <td>
    <select id="expiry_month" tabindex="4">
    <optgroup label="Month">
    <option value="01">January</option>
    <option value="02">February</option>
    <option value="03">March</option>
    <option value="04">April</option>
    <option value="05">May</option>
    <option value="06">June</option>
    <option value="07">July</option>
    <option value="08">August</option>
    <option value="09">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
    </optgroup>
    </select>

    <select id="expiry_year" tabindex="5">
    <optgroup label="Year">
    <script>generate_year();</script>   
    </optgroup>
    </select>
    </td>
</tr>

JavaScript代码:

function generate_year()                    /*For generate cc year*/
    {
        for (var i = 2014; i <= 2104; i++)

        {
            document.write ("<option value='" + i + "'>" + i + "</option>");
        }   
    }

        function val_cc () {          

        var expiry_month = document.getElementById("expiry_month").value;
        var expiry_year = document.getElementById("expiry_year").value;
        var today = new Date();
        var expiry_date = today.setFullYear(expiry_year, expiry_month);

        if (today.getTime() > expiry_date.getTime())

        {
            alert ("\u2022Expiry month and year cannot be blank/Expiry month and year is before today month and year.");

            return false;
        }
}

这些代码主要用于验证信用卡的到期日期。例如,如果今天是2014年3月且用户选择2014年2月,我希望表单返回false。但是,如果他选择2014年4月,我想要表格返回true并进入下一页。如果有错误,你能指出来并做一个简单的解释吗?

3 个答案:

答案 0 :(得分:1)

每次用户更改值时,您都应该从选择框中更新值,请参阅此小提琴http://jsfiddle.net/shershen08/wcFC4/

function runMyCheck(){
//update value every run
var expiry_month = document.getElementById("expiry_month").value;
var expiry_year = document.getElementById("expiry_year").value;

var today = new Date();
var selDate = new Date();

if (today.getTime() > selDate.setFullYear(expiry_year, expiry_month)){
 //too late
    alert ("\u2022Expiry month and year cannot be blank/Expiry month and year is before today month and year.");
    return false;
} else {
//do good stuff...

}

}

答案 1 :(得分:1)

试试这个:

var today = new Date();
var expDate = new Date($("#cart-expyear").val(),($("#cart-expmonth").val()-1)); // JS Date Month is 0-11 not 1-12 replace parameters with year and month
if(today.getTime() > expDate.getTime()) {
   console.log("Your Card is expired. Please check expiry date.");
}

答案 2 :(得分:0)

试试这个:

 function generate_year()                    /*For generate cc year*/
    {
        for (var i = 2014; i <= 2104; i++)

        {
            var x = document.getElementById("expiry_year");
            var option = document.createElement("option");
            option.text = i;
            option.value=i
            x.add(option);
        }   
    }
    var expiry_month = document.getElementById("expiry_month").value;
       alert(expiry_month);
    var expiry_year = document.getElementById("expiry_year").value;
    var today = new Date();
    var expiry_date = today.setFullYear(expiry_year, expiry_month);
     var from=new Date();
    if (today.getTime() >from.setFullYear(expiry_year, expiry_month) )
    {
        alert ("\u2022Expiry month and year cannot be blank/Expiry month and year is before today month and year.");

       //return false;
    }