自动确定信用卡类型

时间:2016-07-15 21:51:03

标签: jquery mobile credit-card

我正在尝试自动确定信用卡类型。下面的代码有效,但不适用于移动设备。我已经尝试过为移动设备找到解决方案,但我现在无法这样做。

这是jQuery:

(function($) {
   $.getCreditCardType = function(val) {
     if(!val || !val.length) return undefined;
     switch(val.charAt(0)) {
       case '4': return 'visa';
       case '5': return 'mastercard';
       case '3': return 'amex';
       case '6': return 'discover';
     };
     return undefined;
   };
   $.fn.creditCardType = function(options) {
     var settings = {
         target: '#credit-card-type',
     };
     if(options) {
         $.extend(settings, options);
     };
     var keyupHandler = function() {
       $("#credit-card-type li").removeClass("active");
       $("input[id=authorizenet_cc_type]").val('');
       switch($.getCreditCardType($(this).val())) {
         case 'visa':
          $('#credit-card-type .VI').addClass('active');
          $("input[id=authorizenet_cc_type]").val('VI');
           break;
         case 'mastercard':
          $('#credit-card-type .MC').addClass('active');
          $("input[id=authorizenet_cc_type]").val('MC');
           break;
         case 'amex':
           $('#credit-card-type .AE').addClass('active');
           $("input[id=authorizenet_cc_type]").val('AE');
           break;
         case 'discover':
           $('#credit-card-type .DI').addClass('active');
          $("input[id=authorizenet_cc_type]").val('DI');
           break;
       };
     };
     return this.each(function() {
       $(this).bind('keyup',keyupHandler).trigger('keyup');
     });
   };
})(jQuery);

答案:我添加了

<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>

我会赞扬斯科特提供的帮助。

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用按键而不是键盘?

var shour = "9:00:00 PM CDT";
var ehour = "12:00:00 AM CDT";

var conver_shour = shour.match(/^(\d+):(\d+)/)[0] + shour.match(/[AP]M/)[0];
var conver_ehour = ehour.match(/^(\d+):(\d+)/)[0] + ehour.match(/[AP]M/)[0];

console.log("shour: " + conver_shour); // The answer should be 09:00PM
console.log("ehour: " + conver_ehour); // The answer should be 12:00AM

或使用您正在监控的输入字段的输入事件?

$(this).keypress(function() {

});

编辑 - 回答您的问题

我不确定你的代码中出现了什么情况。我改变了范围内的一些事情,所以我可以让事情发挥作用。

首先,我将假设HTML看起来像这样。

$(this).on('input', function() {

});

然后JS使用输入事件

<ul id="credit-card-type">
    <li>
        <form>
        <input type="text" id="credit-card-type" />
        <input type="text" id="authorizenet_cc_type" />
        </form>
    </li>
</ul>

答案 1 :(得分:-1)

您可以尝试使用外部API。

集成是微不足道的,您可以将服务器负载转移到第三方,您可以获得最新的信用卡BIN和IIN信息。

有几个提供免费和付费的计划:
https://iinapi.com/
https://www.neutrinoapi.com/