用javascript解析信用卡信息

用javascript解析信用卡信息,javascript,Javascript,所以我尝试使用javascript从读卡器获取信用卡信息 这就是我所拥有的: <script type="text/javascript"> function readCard () { $("#swiped").focus(); //setup before functions var typingTimer; //timer identifier var doneTypingInterval = 2000; //

所以我尝试使用javascript从读卡器获取信用卡信息

这就是我所拥有的:

<script type="text/javascript">
function readCard () {

    $("#swiped").focus();

    //setup before functions
    var typingTimer;                //timer identifier
    var doneTypingInterval = 2000;  //time in ms, 5 second for example

    //on keyup, start the countdown
    $('#swiped').keyup(function(){
        clearTimeout(typingTimer);
        typingTimer = setTimeout(doneTyping, doneTypingInterval);
    });

    //on keydown, clear the countdown 
    $('#swiped').keydown(function(){
        clearTimeout(typingTimer);
    });

    function doneTyping () {
        var card_data = document.getElementById('swiped').value;

        var details1 = card_data.split("^");

        var card_number = details1[0];
        card_number = card_number.substring(2);

        var names = details1[1].split("/");
        var first_name = names[1];
        var last_name = names[0];

        var details2 = details1[2].split(";");
        details2 = details2[1].split("=");

        var exp_date = details2[1];
        exp_date = exp_date.substring(0, exp_date.length - 1);
        exp_date_month = exp_date.substring(2,4);
        exp_date_year = exp_date.substring(3, 1);

        //document.getElementById("first_name").value = first_name;
        //document.getElementById("last_name").value = last_name;
        document.getElementById("cardNumber").value = card_number;
        document.getElementById("cardExpMonth").value = exp_date_month;
        document.getElementById("cardExpYear").value = exp_date_year;

        $("#swiped").val('');
        $("#swiped").blur();
    }
}
</script>
它启动一个计时器,然后当计时器用完时,它执行代码。一切正常。它撕碎了信用卡读卡器的弦,显示了除了到期年份以外的一切正常。所以我的问题是:

var exp_date=details2[1]; exp_date=exp_date.substring0,exp_date.length-1; exp\u date\u month=exp\u date.子字符串2,4; exp\u date\u year=exp\u date.substring3,1

我从这个问题中得到了这个密码http://stackoverflow.com/questions/19018799/parsing-credit-card-data-from-magnetic-stripe-reader-using-javascript 除该死的过期外,它还能工作。我想不出来

它应该导致exp month:10和exp year:15,但相反,它会导致exp month:10和exp year:51

读卡器中的字符串如下所示:

%B424242^EVANS/MITCH^151010119063000074000000?;4242=151010119063074

其中:

4242将是卡号

以及:

15101011906300074000000将是到期号


不,那不是真实的信用卡数据

不确定从哪里得到exp\u date.substring3,1,它应该是exp\u date.substring0,2

exp_date.substring3,1与exp_date.substring1,3相同,从第2个字符到第4个字符,这就是为什么会得到51


请参见exp_date=exp_date.substring0,exp_date.length-1;:这没什么用,是吗?我不明白你在问什么。我把那句话删掉了,没有任何改变。事实上,我只是想说那句话对你所做的事情没有用处。