我正在尝试创建一个信用验证表单。输入字段无论应始终最多为19位数字,并且有4位数字由短划分隔开。到目前为止,我可以在打字时做到这一点,但粘贴不起作用,编辑几个数字也不行,表单不会更新。创建信用卡输入。为什么表格不能为4位数的信用卡添加破折号?
我不想使用任何插件,我的客户端只使用万事达卡和维萨卡,这就是为什么他们要求19位数的原因。
到目前为止,我也试图把我的代码在一个循环,但循环仍不能正常上复制和粘贴和所有的场景
var cc = $('#cc-card');
// start loop
setInterval(function() {
jQuery(cc).on('propertychange click blur change change keyup keydown paste', function() {
var cctlength = jQuery(this).val().length;
// out put should always be 0000-0000-0000-0000
switch (cctlength) {
case 4:
var cctVal = jQuery(this).val();
var cctNewVal = cctVal + '-';
jQuery(this).val(cctNewVal);
break;
case 9:
var cctVal = jQuery(this).val();
var cctNewVal = cctVal + '-';
jQuery(this).val(cctNewVal);
break;
case 14:
var cctVal = jQuery(this).val();
var cctNewVal = cctVal + '-';
jQuery(this).val(cctNewVal);
break;
default:
break;
}
});
// end loop
}, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="cc-card" type="text" maxlength="19" placeholder="•••• •••• •••• ••••">
为什么不使用像'.replace(/({4})/克, “$ 1 - ”。);''实施例 “1234567898765432” .replace(/({。 4})/ g,“$ 1 - ”)。substring(0,19);' – NewToJS
不使用set interval!哎呀! –
@NewToJS我试了一下,并更新到这个; https://jsfiddle.net/1ywb5t3n/3/ - 似乎涵盖了一切? – TheBlackBenzKid