注册IBAN时如何每4个字符插入一个空格?

2024-03-22

我对 JavaScript 很陌生,我想在我的输入文本中添加用于注册 IBAN 帐户的空格插入。

<input type="text" name="iban" onkeyup="if(this.value.length > 34){this.value=this.value.substr(0, 34);}" />

有我的输入字段;有人可以告诉我该怎么做吗?


现有的答案都比较长,看起来有些过头了。另外,它们不能完全工作(例如,一个问题是您无法编辑以前的字符)。

对于有兴趣的人来说,根据维基百科 http://en.wikipedia.org/wiki/International_Bank_Account_Number:

允许的 IBAN 字符为数字 0 到 9 以及 26 个大写拉丁字母字符 A 到 Z。

这是一个相对较短的版本,与现有答案类似:

document.getElementById('iban').addEventListener('input', function (e) {
  e.target.value = e.target.value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
});
<label for="iban">iban</label>
<input id="iban" type="text" name="iban" />

如上所述,需要注意的是您无法返回并编辑以前的字符。如果您想解决此问题,您需要通过最初访问来检索插入符号的当前位置selectionEnd属性,然后设置插入符的位置after已应用正则表达式格式。

document.getElementById('iban').addEventListener('input', function (e) {
  var target = e.target, position = target.selectionEnd, length = target.value.length;
  
  target.value = target.value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
  target.selectionEnd = position += ((target.value.charAt(position - 1) === ' ' && target.value.charAt(length - 1) === ' ' && length !== target.value.length) ? 1 : 0);
});
<label for="iban">iban</label>
<input id="iban" type="text" name="iban" />

您会注意到,当插入符号后面的字符是空格时,会出现一个小问题(因为在最初检索插入符号的位置时并未考虑该空格)。为了解决这个问题,如果后续字符是空格,则手动增加位置(假设实际添加了空格 - 这是通过比较替换字符之前和之后的长度来确定的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册IBAN时如何每4个字符插入一个空格? 的相关文章

随机推荐