【发布时间】:2021-02-04 07:54:04
【问题描述】:
我正在研究自动填充的连字符是 HTML 输入字段的不规则长度。
After the 2nd digit/character
After the 6th digit/character
After the 13th digit/character
12-3456-7891234-00000
我想出了下面的代码,它可以很好地添加连字符。然而,使用退格键会破坏逻辑。无论如何我可以使用正则表达式来实现这一点,也许它会考虑整个字符串来处理拆分?
var newFoo = '';
$('.nzPhoneNumber').on('change keydown paste input', function(){
var foo = $(this).val();
if (foo.length === 2) {
newFoo = foo.concat('-')
$(this).val(newFoo);
} else if (foo.length === 7) {
newFoo = newFoo + foo.substring(3,7) + '-'
$(this).val(newFoo);
} else if (foo.length === 15) {
newFoo = newFoo + foo.substring(8,15) + '-'
$(this).val(newFoo);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="nzPhoneNumber" />
【问题讨论】:
-
使用单独的“输入值”与“显示值”。或者检查插入符号的位置(并在
.val(newval)之后恢复它)以查看它是在破折号之后(在退格上)还是在破折号之前(在删除时)。您还可以在用户诅咒时移动插入符号(但不会在退格/删除问题之前/之后修复) -
此外,还有大量的“屏蔽输入框”jquery 插件。不要重新发明轮子!
-
嘿,伙计@WiktorStribiżew,这很好用。我花了将近 2 个小时才明白你在那里做了什么!对我来说很好的学习曲线。如果您可以将其作为答案发布,我很乐意接受此答案。
-
@SubSul 添加了 fixed version 并附有解释和另一种选择。
标签: javascript jquery regex string