【问题标题】:Parsing Credit Card info with javascript用javascript解析信用卡信息
【发布时间】:2014-05-08 23:21:40
【问题描述】:

所以我正在尝试使用 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.substring(0, exp_date.length - 1); exp_date_month = exp_date.substring(2,4); exp_date_year = exp_date.substring(3, 1);

我从这个问题http://stackoverflow.com/questions/19018799/parsing-credit-card-data-from-magnetic-stripe-reader-using-javascript 中得到了这个代码,它运行良好,除了该死的过期。我想不明白。

它应该导致 exp 月:10 和 exp 年为:15,但结果却是 exp 月:10 和 exp 年:51。

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

%B4242424242424242^EVANS/MITCH^15101011906300074000000?;4242424242424242=151010119063074?

地点:

4242424242424242 是卡号

和:

15101011906300074000000 将是到期号

这不是真正的信用卡数据;)

【问题讨论】:

  • exp_date = exp_date.substring(0, exp_date.length - 1); :这不会有任何作用,是吗?
  • 我不明白你在问什么。
  • 我把那条线去掉了,没有任何改变。
  • 确实,我只是想说那行对你正在做的事情没有用。

标签: javascript


【解决方案1】:

不确定你在哪里找到exp_date.substring(3, 1),应该是exp_date.substring(0, 2)

exp_date.substring(3, 1)exp_date.substring(1, 3) 相同,从第 2 个字符到第 4 个字符,这就是你得到 51 的原因。

the MDN doc for toString

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 2011-04-11
    • 2012-03-09
    • 2010-12-18
    • 2018-12-19
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多