Jquery keypress, keydown, keyup, input不适合我的要求



我有一个要求,在输入文本框中,对输入的每个值都必须进行验证,并且在输入第6个字符之后必须在字符串中添加连字符。

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

  1. keyup -它可以完美地检测输入的每个字符并添加连字符,除了"它将只发送一个长键按下的单个键条目"。例如:如果我长时间按下"9",文本框中的值将是"999999999999",但keyup事件只触发一次。

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

  3. keydown -我没有得到每个键下的确切当前值。例如:如果我在字段中输入"9",在keydown事件中,我只得到"作为当前值"。我输入'99',我得到'9'作为字段值。

  4. input -一切都很好,除了我无法得到这个函数内的键码。

那么,为了

  1. 使用长按键,
  2. 退格检测,
  3. 键被按下时更新的当前值,

同时工作

在过去的几个小时里,我一直在探索很多东西。也许这是一件简单的事情,但我无法得到答案。非常感谢你的帮助。

我有同样的问题,并修复它添加这两个函数:

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

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

https://jsfiddle.net/zx7snsos/

$('input').on('keyup', function(e){
    var str=$('input').val();
    if(str.length>6&&str.indexOf('-')!=6)
        str=str.slice(0,6)+'-'+str.slice(6);
    else if(str.length==6)
        str+='-';
    $('input').val(str);
});

相关内容

  • 没有找到相关文章

最新更新