防止快速使用Tab键?

时间:2019-05-19 16:39:53

标签: javascript jquery

我具有一项功能,该功能禁止用户将特定符号输入到<input>标记中,并且还将所有字母字符都转换为大写。

当我发现此错误并快速在元素之间切换时,一切都很好。

问题:

只要用户输入一个字符并真正快速按下tab键,最后一个字符就不会转换为大写。

注意:

我仍然想让用户在输入之间进行制表,因此这里e.preventDefault()不能作为选项。我需要在20到30毫秒左右的时间内稍微降低标签操作的速度。

代码:

var $inputs = $('input[type="text"]');

$inputs.on('keyup keydown keyhold paste', function(e) {
    //validate_input will return true if character is allowed and transformed into upper case
    if (!validate_input(e, $(this))) {
        return false;
    }

    if (e.which == 9) {
       // i need to do something here to slightly slow down the tab process
       // just to make sure the above function will execute before the default tab action.
    }
});

1 个答案:

答案 0 :(得分:2)

我建议您改用input-event。值更改时将触发该事件。您可以在那里过滤允许的值,并将其转换为大写。这是一种更轻松,万无一失,无故障,与浏览器无关,与键盘无关,与辅助技术无关的解决问题的方法。