我具有一项功能,该功能禁止用户将特定符号输入到<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.
}
});
答案 0 :(得分:2)
我建议您改用input-event。值更改时将触发该事件。您可以在那里过滤允许的值,并将其转换为大写。这是一种更轻松,万无一失,无故障,与浏览器无关,与键盘无关,与辅助技术无关的解决问题的方法。