javascript– 自动格式化xyk号作为用户类型输入

javascript– 自动格式化xyk号作为用户类型输入,第1张

概述我想使用JavaScript创建一个输入,自动使用正确的信用卡格式对其进行格式化.我想要的是?>输入应格式化为4的组输入.如果我输入1234567890123456,则应将其格式化为1234 5678 9012 3456>最大长度应为16位.因此,如果我输入1234567890123456789,则应将其格式化为“1234 5678 9012 3

我想使用JavaScript创建一个输入,自动使用正确的xyk格式对其进行格式化.

我想要的是?

>输入应格式化为4的组输入.如果我输入1234567890123456,则应将其格式化为1234 5678 9012 3456
>最大长度应为16位.因此,如果我输入1234567890123456789,则应将其格式化为“1234 5678 9012 3456”
>键入时应格式化.因此,如果我键入“123456”,则应将其格式化为“1234 56”
>应忽略无效字符.所以,如果我输入564adsd299 474,它应格式化为“5642 9947 4”

输入还应该尊重文本框的传统行为. (|这里类似于光标,例如

如果我在输入时输入8:

> 1234 5 | 67它应该转到1234 58 | 67
> 1234 |,应该转到1234 8
> 1234 | 567它应该转到1234 8567
> 1234 | 5679它应该转到1234 8567 9

如果我在输入时删除了前一个字符:

> 1234 5 | 67它应该转向1234 | 67
> 1234 | 567它应该转向1234 | 567
> 1234 | 567应该转向123 | 5 67

可能会有更多的测试用例.

基本上它应该与Google Play商店中使用的“输入卡片详细信息”完全相同.要查找此页面:在AndroID设备上打开Play商店>点击帐户>付款方式>添加xyk或借记卡.此屏幕也可在此处找到:https://play.google.com/store/account

到目前为止我有什么?

这是我到目前为止:

var txtCardNumber = document.querySelector("#txtCardNumber");txtCardNumber.addEventListener("input",onChangeTxtCardNumber);function onChangeTxtCardNumber(e) {		    var cardNumber = txtCardNumber.value; 	  // Do not allow users to write invalID characters    var formattedCardNumber = cardNumber.replace(/[^\d]/g,"");    formattedCardNumber = formattedCardNumber.substring(0,16);      // Split the card number is groups of 4    var cardNumberSections = formattedCardNumber.match(/\d{1,4}/g);    if (cardNumberSections !== null) {        formattedCardNumber = cardNumberSections.join(' ');	    }	    console.log("'"+ cardNumber + "' to '" + formattedCardNumber + "'");      // If the formmattedCardNumber is different to what is shown,change the value    if (cardNumber !== formattedCardNumber) {        txtCardNumber.value = formattedCardNumber;    }}

以上格式完美地标记了xyk号,但问题在我想要编辑时开始.

但是,由于光标只是跳到最后,因此上面不满足测试用例5.

我怎样才能实现这种行为.我知道谷歌已经做到了这一点.

(请不要使用PayPal答案)

编辑:请注意,我正在寻找本机JavaScript解决方案,但可以随意建议插件作为注释.例外是几乎没有依赖的库,所以可以只复制源代码.

我还在上面的代码中删除了jquery以鼓励本机Js解决方案.

最佳答案我看到你正在使用jquery,而不是尝试自己解决这个逻辑,你可以考虑使用一个蒙版输入插件.我之所以选择this one只是因为它首先出现在搜索中.有自定义选项,它似乎满足您的所有要求.

$('#txtCardNumber').mask("9999 9999 9999 9999");
          总结       

以上是内存溢出为你收集整理的javascript – 自动格式化xyk号作为用户类型输入全部内容,希望文章能够帮你解决javascript – 自动格式化xyk号作为用户类型输入所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1119150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)