Javascript 防止快速使用tab键?

Javascript 防止快速使用tab键?,javascript,jquery,Javascript,Jquery,我有一个功能,它禁止用户将特定符号输入到标记中,也禁止用户将所有字母字符转换为大写 当我发现这个在元素之间快速切换的bug时,一切都很顺利 问题: var $inputs = $('input[type="text"]'); $inputs.on('keyup keydown keyhold paste', function(e) { //validate_input will return true if character is allowed and transformed in

我有一个功能,它禁止用户将特定符号输入到
标记中,也禁止用户将所有字母字符转换为大写

当我发现这个在元素之间快速切换的bug时,一切都很顺利

问题:

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.
    }
});
每当用户输入一个字符并快速按下tab键时,最后一个字符将不会转换为大写

注意:

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.
    }
});
我仍然想让用户在输入之间进行制表,因此这里不能选择
e.preventDefault()
。我需要稍微降低tab操作的速度,大约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.
    }
});

我建议您使用-event。值更改时激发的。您可以在那里过滤允许的值,并将其转换为大写。这是一种更简单、万无一失、故障更少、独立于浏览器、独立于键盘、独立于辅助技术的解决问题的方法。

使用
e.key
而不是
e.which
,因为它依赖于操作系统/浏览器。谢谢您的建议,但这并不能解决我目前的问题。为什么你不改变你的函数,让它在输入没有焦点的情况下工作呢?你做得不对。您可能应该改用-event。听着,您可以像到目前为止所做的那样继续,尝试找到各种方法来阻止浏览器执行它应该执行的操作,尝试修复错误,并在用户使用其他浏览器、带外语的键盘或某些特殊帮助程序时查找新的错误。或者您可以更改所有这些,并使用输入事件在那里执行检查和转换。并非所有浏览器都完全支持输入事件。模糊或更改事件优于输入。和@manpreetinghillon,所有主要浏览器都支持输入类型=文本。即使旧的internet explorer在输入类型=文本时也支持它。