Jquery按键,keydown,keyup,输入不符合我的要求

时间:2015-05-28 17:22:24

标签: jquery input keypress keydown keyup

我有一个要求,就是在输入文本框中,在输入的每个值上都必须进行验证,并且在输入第6个字符后,必须将连字符附加到字符串中。

我尝试过的解决方案和遇到的问题如下:

  1. keyup - 它完美地用于检测输入的每个字符并附加一个连字符,除了"它只会发送一个键输入长按键"。例如:如果我保留' 9'按下很长一段时间后,文本框中的值将为“999999999999'但是keyup事件只触发一次。

  2. keypress - 它完美地用于检测输入的每个字符并附加连字符,除了"按键事件未在退格键上调用"。例如:如果我输入退格键,我有一个功能可以再次验证该字段并删除连字符。

  3. keydown - 我没有得到每个键的确切当前值。例如:如果我输入' 9'在现场,在keydown活动中,我只得到''作为当前值。我输入' 99',我得到' 9'作为字段值。由于在keydown事件上,该值不会在字段中更新。

  4. 输入 - 一切正常,但我无法在此函数中获取键码。 (没有它我无法检测到退格)。

  5. 那么,为了

    应该做些什么
    1. 使用长按键,
    2. 退格检测,
    3. 按下键时更新当前值
    4. 同时工作。

      在过去的几个小时里,我一直在探索很多事情。可能这是一件简单的事情,但我无法得到答案。非常感谢您的帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我有同样的问题并修复它添加这两个功能:

$('#YourId').keydown(function () {
  yourFunction();
}).keyup(function () {
  yourFunction();
});

答案 1 :(得分:0)

如果你只需要做一次,就像第一次输入第6个字符而不是每6个字符一样,你可以这样做:

https://jsfiddle.net/zx7snsos/

true