Angular アプリのいくつかの場所で、ESC キーを使用してユーザーからの入力をクリアする必要があります。問題は、テキスト入力フィールドでそれを行う方法がわからないことです(テキストエリアはクリアできます)。このフィドルを参照してください:
バインディング:
<input ng-model="search.query" ui-keypress="{esc: 'keyCallback($event)'}" />
私が使用するコールバック:
$scope.keyCallback = function($event) {
$event.preventDefault();
$scope.search.query = '';
}
ESC キーでテキスト入力をクリアするために何をする必要があるか、誰でも理解できますか?
解決策: bmleiteのアドバイスに従って、'keypress' ではなく'keydown'と'keyup'をリッスンする必要があります。問題は、'keydown' が Firefox では機能しないため、'keyup' だけが ESC をリッスンして魔法のトリックを行ったことです。;)
作業フィドル: http://jsfiddle.net/aGpNf/190/
解決策の更新: 最終的に、「keydown」イベントと「keyup」イベントの両方をリッスンする必要がありました。私の場合、FFはESCキーダウンの入力フィールドを以前の状態にリセットするため、モデルが台無しになりました。したがって、「keyup」はモデルをクリアし、「keydown」はモデルが空かどうかをチェックして適切なアクションを実行します。また、テキストが再び飛び出さないように、手動で入力のフォーカスを外す必要があります。:/