【发布时间】:2015-03-28 01:43:28
【问题描述】:
如何在输入字段中的每 5 个数字(如用户键入)后添加一个空格?
12345 56789 12345 56789
限制是我不能使用像 jQuery 这样的任何框架。这必须使用纯 Javascript 或 CSS 来完成。
我还需要支持按退格键并更正数字或将光标放在任何位置并开始使用退格键进行更正的功能。
以下代码基于此处的答案: How to insert space every 4 characters for IBAN registering?
退格不能可靠地工作。
function space(str, after) {
if (!str) {
return false;
}
after = after || 4;
var v = str.replace(/[^\dA-Z]/g, ''),
reg = new RegExp(".{" + after + "}", "g");
return v.replace(reg, function(a) {
return a + ' ';
});
}
var el = document.getElementById('pin');
el.addEventListener('keyup', function() {
this.value = space(this.value, 4);
});
<form>
<input autocapitalize="off" autocorrect="off" maxlength=20 type="text" placeholder="type the pin" id="pin" name="pin" />
<script>
</script>
</form>
【问题讨论】:
-
在每次击键后保持字母计数
-
如果用户输入 1234567890 并且它自动间隔到 12345 67890 并且用户返回并通过在第一个分组的末尾添加另一个 6 来编辑该数字,如果它更正为 12345 6 67890 或 12345 66789 0?
-
@brdx,如果组已满,则不应允许添加另一个数字。我认为从最终用户的角度来看,这将是最直观(或最不容易混淆)的行为。
-
听起来像有多个输入框,每个输入框只有 5 位验证更符合您的要求。输入所有字段后,您可以将它们组合成一个字符串
-
@brdx,您建议的解决方案绝对比在一个输入字段中操作文本更灵活可靠。我会写这个版本并测试一下。
标签: javascript html css regex