根据文档,我应该能够像处理keypress
事件一样处理click
等关键事件,但我觉得我错过了一些东西。
我做了以下事情:
> meteor create keypressTest
> cd keypressTest
> sed -e 's/click input/keypress body/' -i .bak keypressTest.js
> meteor
但是当我按下按键时,控制台中没有任何内容像处理点击事件时那样出现。
在流星中是否有任何工作密钥处理的例子?我知道我可以在jquery中做一个解决方法,但如果可以的话,我更愿意坚持使用干净的模板事件。
答案 0 :(得分:10)
请注意keypress is deprecated,您可能希望使用textinput。
但我注意到keydown
和keyup
未被弃用,因此使用其中一个可能比使用keypress
更可靠。请注意,文档指定了顺序:
keydown
keypress
keyup
如果你想对媒体采取行动,你可以使用keydown
;如果你想对电梯采取行动,请使用keyup
。我更喜欢后者,因为它仍然允许你在解除之前切换到另一个应用程序来取消按键...
答案 1 :(得分:8)
我可以找到我的'按键'事件
Template.myTemplate.events({
'keypress input': function(e) { console.log('key', e); }
});
或更实用的例子
Template.myTemplate.events({
'keyup input': function(event) {
if (event.which === 13) {
alert('you hit enter');
event.stopPropagation();
return false;
}
},
...
@tom,我在textinput上没有得到任何东西:(
答案 2 :(得分:5)
我错过了在事件图中使用关键事件的这两个要求:
第二点似乎与点击一致,因为click *
仅在点击按钮时触发,而不是在模板中也包含的问候文本上触发。
答案 3 :(得分:1)
Enter将返回event.charCode = 0
,而是使用event.keyCode
,这将返回13。
'keypress input': function(event) {
if (event.keyCode == 13) {
alert('you hit enter');
event.stopPropagation();
return false;
}
}