【问题标题】:USB Credit Card reader to CC fieldsUSB 信用卡读卡器到 CC 字段
【发布时间】:2017-08-12 04:55:31
【问题描述】:

我有以下字段

<input type="number" id="input_6_cc_number" name="q6_invoiceAmount[cc_number]" class="form-textbox validate[required] cc_number" autocomplete="off" size="20" value="" data-component="cc_number" /> 

我在这里使用代码

$(document).ready(function(){

    $('#input_6_cc_number').click(function(){

        //document.getElementById('SwipeNowAlert').innerHTML = 'You may now swipe.';

    }).blur(function(){

        document.getElementById('SwipeNowAlert').innerHTML = 'Don\'t Swipe';

    }).focus(function(){

        document.getElementById('SwipeNowAlert').innerHTML = 'SWIPE NOW';

    }).keyup(function(event) {

        if (event.keyCode == 13) {

            var ccNum =  $('#credit-card-number').val();

            var isCaretPresent = false;
            var isEqualPresent = false;

            if (ccNum.indexOf("^") != -1)
                isCaretPresent = true
            else
                isCaretPresent = false;

            if (ccNum.indexOf("=") != -1)
                isEqualPresent = true
            else
                isEqualPresent = false;

            //handle parsing differently depending on card format
            if (isCaretPresent) {

                var cardData = ccNum.split('^');

                $("#first-name").val(formatFirstName(cardData[1]));
                $("#last-name").val(formatLastName(cardData[1]));

                var decryptedCardNumber = formatCardNumber(cardData[0]);

                $("#card-number").val(decryptedCardNumber);
                $("#card-type").val(getCardType(decryptedCardNumber));

                $("#expiration-month").val(cardData[2].substring(2, 4));
                $("#expiration-year").val(cardData[2].substring(0, 2));


            } else if (isEqualPresent) {

                var cardData = ccNum.split('=');

                var decryptedCardNumber = formatCardNumber(cardData[0]);

                $("#CardNumber").val(decryptedCardNumber);
                $("#CardType").val(getCardType(decryptedCardNumber));

                $("#ExpirationMonth").val(cardData[2].substring(2, 4));
                $("#ExpirationYear").val(cardData[2].substring(0, 2));
            }

        } else {
            return true;
        }
    }); 


    function formatCardNumber(cardNum) {

        var result = "";

        result = cardNum.replace(/[^0-9]*/, "");

        return result;
    }

    function formatFirstName(name) {

        if (name.indexOf("/") != -1) {

            var nameSplit = name.split('/');

            return nameSplit[1];

        } else {
            return "";
        }
    }

    function FormatLastName(name) {

        if (name.indexOf("/") != -1) {

            var nameSplit = name.split('/');

            return nameSplit[0];

        } else {
            return "";
        }
    }

    function getCardType(number) {

        var re = new RegExp("^4");
        if (number.match(re) != null)
            return "Visa";

        re = new RegExp("^(34|37)");
        if (number.match(re) != null)
            return "American Express";

        re = new RegExp("^5[1-5]");
        if (number.match(re) != null)
            return "MasterCard";

        re = new RegExp("^6011");
        if (number.match(re) != null)
            return "Discover";

        return "";
    }

});

我正在使用信用卡读卡器,但无法正确扫描。我为此使用 JQuery 3.2。我无法让点击功能出现,这应该提醒我滑动、不要滑动或现在滑动。感谢您的帮助

【问题讨论】:

  • 他可能使用 PHP 中的表单
  • 正确的 SsJVasto
  • @Machavity 读卡器(或条形码扫描仪)通常像 HID 一样被检测到,并生成纯文本(就像使用键盘输入一样)。您可以使用 Javascript 解析原始输出并填充所需的字段。如果没有读者生成的样本,很难创建解析字符串(我会使用正则表达式)......
  • @MHeredia 所有事件都触发了吗?

标签: javascript jquery credit-card


【解决方案1】:

假设读卡器作为键盘工作,当您按照您的想法执行 keyup 事件时它会工作,但如果您使用 focusout() 和 focusin( ) 事件而不是 blur() 和 focus(),试一试并告诉我。来自阿根廷的祝福。

【讨论】:

    猜你喜欢
    • 2012-04-05
    • 2012-11-12
    • 1970-01-01
    • 2017-04-19
    • 2012-08-17
    • 2011-09-07
    • 1970-01-01
    • 2011-11-22
    • 2012-05-19
    相关资源
    最近更新 更多