jQuery - 如何在输入过程中屏蔽信用卡号?

时间:2015-01-27 01:19:05

标签: javascript jquery css validation

我的目标是制作一个类似于http://jquerycreditcardvalidator.com/的表单。我曾尝试查看该页面的源代码,但这超出了我的专业知识,所以我尝试使用jquery重写代码。我还想在输入前两位数后屏蔽输入。

问题:

清除显示的CC图像,似乎仅适用于FireFox,并且无法预测。 一旦输入被屏蔽以符合信用卡类型,光标就会被抛到输入框的末尾

我在这里做错了什么?必须有一个更简单的方法来做到这一点

使用代码填充http://jsfiddle.net/nh7qqfgx/

(为了说服,彩色矩形div是实际卡片标识的占位符)

代码:

$('#ccnumber').validateCreditCard(function (result) {
        // this will execute everytime the value of the `#cc_number` field changes



        if (result.card_type == null) {
            $("#ccHolder").removeClass();

        }
        if (result.card_type != null) {
            cardtype = result.card_type.name;


            $("#ccHolder").addClass(result.card_type.name);

            if (result.card_type.name === 'visa') { //if the card is Visa
                $("#ccnumber").mask("9999-9999-9999-9999", { placeholder: " ", autoclear: false });

            }
            if (result.card_type.name === 'amex') { //if the card is American Express
                $("#ccnumber").mask("999-999999-999999", { placeholder: " ", autoclear: false });

            }
            if (result.card_type.name === 'mastercard') { //if the card is MasterCard
                $("#ccnumber").mask("9999-9999-9999-9999", { placeholder: " ", autoclear: false });

            }
            if (result.card_type.name === 'discover') { //if the card is Discover
                $("#ccnumber").mask("9999-9999-9999-9999", { placeholder: " ", autoclear: false });

            }
            if (result.card_type.name === 'JCB') { //if the card is JCB
                $("#ccnumber").mask("9999-9999-9999-9999", { placeholder: " ", autoclear: false });

            }
            if (result.card_type.name === 'Diners Club') { //if the card is Diners Club
                $("#ccnumber").mask("999-999999-99999", { placeholder: " ", autoclear: false });
            }

        }
    });

0 个答案:

没有答案