微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同卡片类型的 jQuery 掩码

如何解决不同卡片类型的 jQuery 掩码

我有一个信用卡输入,它的掩码应该在输入更改事件后动态更改(例如,它的认掩码是“9999 9999 9999 9999”,但对于“37”,它应该更改为 AMEX 格式“9999 999999 99999”) .

打字正常,但复制/粘贴时格式不正确。

$('input').on('input',function (e) {
  var value = $(this).inputmask('unmaskedvalue');

    $('input').inputmask({
      mask: (value.substr(0,2) === '37' || value.substr(0,2) === '34') ? '9999 999999 99999' : '9999 9999 9999 9999'
   });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/inputmask/4.0.9/jquery.inputmask.bundle.min.js"></script>

<input>

<p>
Try switching between the these two (paste first,then second then first again):
</p>
<ul>
  <li>5100000000404390</li>
  <li>370000000024291</li>
</ul>

知道哪里出错了吗?

解决方法

我只是跳进去阅读文档https://github.com/RobinHerbots/Inputmask

这是我目前所能提供的帮助

更新:使用 alternator

$('#cc').inputmask({
  mask: '(3(4|7)99 9{6} 9{5}|3999 9{4} 9{4} 9{4}|9{4} 9{4} 9{4} 9{4})'
}).change(function(){
  let value = $(this).val().substr(0,2);
  $('#vv').inputmask({
    mask: (value==34||value==37)?'9{4}':'9{3}'
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/inputmask/4.0.9/jquery.inputmask.bundle.min.js"></script>

<input id="cc"/>
<input id="vv"/>
<p>
Try switching between the these two (paste first,then second then first again):
</p>
<ul>
  <li>5100000000404390</li>
  <li>370000000024291</li>
</ul>

,

您没有补偿面罩长度的变化。只需将您的 AMEX 掩码更改为 9999 999999 99999[9]

$('input').on('input',function (e) {
 var value = $(this).inputmask('unmaskedvalue');

   $('input').inputmask({
     mask: (value.substr(0,2) === '37' || value.substr(0,2) === '34') ? '9999 999999 99999[9]' : '9999 9999 9999 9999'
  });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。