5

keypressドキュメントによると、イベントを処理できるのと同じように重要なイベントを処理できるはずですがclick、何かが足りないように感じます。

私は次のことをしました:

> meteor create keypressTest
> cd keypressTest
> sed -e 's/click input/keypress body/' -i .bak keypressTest.js
> meteor

しかし、キーを押しても、クリック イベントを処理するときのように、コンソールには何も表示されません。

meteor でキーを処理する例はありますか? jquery で回避策を実行できることはわかっていますが、できればクリーンなテンプレート イベントに固執したいと考えています。

4

4 に答える 4

11

keypressは非推奨であり、代わりにtextinputを使用することをお勧めします

ただし、keydownkeyupは非推奨ではないことに注意してください。そのため、これらのいずれかを使用すると、を使用するよりも信頼性が高くなる可能性がありkeypressます。ドキュメントで順序が指定されていることに注意してください。

  1. keydown
  2. keypress
  3. keyup

あなたが報道機関に行動したいなら、あなたは使うことができますkeydown; リフトに作用したい場合は、を使用してkeyupください。持ち上げる前に別のアプリケーションに切り替えることでキー押下をキャンセルできることを考えると、後者の方がいいと思います...

于 2012-06-02T23:36:47.997 に答える
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;
      }
   },
    ...

@トム、テキスト入力で何も得られませんでした:(

于 2013-04-17T04:51:58.490 に答える
5

イベントマップで主要なイベントを使用するための次の 2 つの要件がありませんでした。

  1. イベント ターゲットは、テンプレート内に含まれている必要があります (他のイベントと同じ)。
  2. イベント ターゲットは、入力可能な入力要素である必要があります

2 番目のポイントはクリックと一致しているように見えclick *ます。これは、ボタンをクリックしたときにのみ が起動し、テンプレート内に含まれているあいさつのテキストでも起動しないためです。

于 2012-06-04T13:40:10.477 に答える
1

Enter は を返しますがevent.charCode = 0、代わりにevent.keyCodethis を使用すると 13 が返されます。

'keypress input': function(event) {
    if (event.keyCode == 13) {
        alert('you hit enter');
        event.stopPropagation();
        return false;
    }
}
于 2015-05-26T20:10:54.743 に答える