我正在编写一个将小部件修改为文本区域的库,因此我需要检测用户何时开始输入内容:
this.$input.bind('keydown keyup', function() {
if (this.$input.val() == …) { … }
}
.val()
仅在触发keyup
时更新。那是太多的延迟。我想知道keydown
上输入框的状态。你知道一个改进.val()
的库吗?
答案 0 :(得分:5)
编辑还有input event一旦输入发生变化就会被触发(在键盘之前,但在值发生变化之后);
答案 1 :(得分:3)
确定keydown
/ keypress
字符的唯一方法是使用event.keyCode
或event.which
属性(其中event
是一个对象,通过作为事件监听器函数的第一个参数。)
交换keypress
事件的事件。按下该键时会触发此事件侦听器。 keydown
和keyup
只会被解雇一次。在keydown
/ keyup
事件期间,可能已添加多个字符。
答案 2 :(得分:3)
Found a seemingly perfect solution。使用前面提到的HTML5 oninput
和IE onpropertychange
后备。辉煌。太棒了。其他快乐的话。
答案 3 :(得分:1)
对于按键(例如“a”键),在将“a”附加到文本输入之前触发keydown
事件。您可以检测事件类型,以及.keyCode
(或.which
)事件属性是否是可打印范围内的键,并尝试预测.val()
可能在{{1}之后返回事件,但这是一个坏主意。
keyup