【发布时间】:2015-05-28 17:22:24
【问题描述】:
我有一个要求,即在输入文本框中,必须对输入的每个值进行验证,并且在输入第 6 个字符后,必须将连字符附加到字符串中。
我尝试过的解决方案和遇到的问题如下:
keyup - 它可以完美地检测输入的每个字符并附加一个连字符,除了“它只会发送一个长按键输入”。例如:如果我长按'9',文本框中的值将是'999999999999',但keyup事件只触发一次。
keypress - 它可以完美地检测输入的每个字符并附加连字符,除了“在退格上不调用按键事件”。例如:如果我输入退格键,我可以再次验证该字段并删除连字符。
keydown - 我没有得到每个按键的确切当前值。例如:如果我在字段中输入“9”,在 keydown 事件中,我只会得到“”作为当前值。我输入'99',我得到'9'作为字段值。由于在 keydown 事件中,字段中的值不会得到更新。
输入 - 一切正常,除了我无法在此函数中获取键码。 (没有它我无法检测到退格)。
那么,应该怎么做呢
- 使用长按键,
- 退格检测,
- 按下按键时更新当前值,
同时工作。
在过去的几个小时里,我一直在探索很多东西。可能这是一件简单的事情,但我无法得到答案。您的帮助将不胜感激。提前致谢。
【问题讨论】:
-
.on('change', function(){})呢? -
延迟 keydown 是否适合您的用例:jsfiddle.net/whfppw0q ?
-
谢谢@DarrenSweeney。但是“更改”功能只会触发输入模糊。
-
所以实际上您正在寻找某种输入掩码。有很多插件可用。我想你应该找到一个适合你的需求,例如这个:github.com/RobinHerbots/jquery.inputmask
-
谢谢@A.Wolff。这个解决方案会帮助我。我会试试看,如果这个解决方案有效,赞!
标签: jquery input keypress keydown keyup