В нескольких местах моего приложения Angular мне нужно очистить входы от пользователя клавишей ESC. Проблема в том, что я не знаю, как это сделать с текстовыми полями ввода (textarea очищает OK). Смотрите эту скрипту:
jsFiddle демонстрация проблемы
Переплет:
<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 делает поле ввода reset на клавиатуре ESC до предыдущего состояния, поэтому оно испортило мою модель. Таким образом, "keyup" очищает проверку модели и "keydown" , если модель пуста и выполняет соответствующие действия. Мне также нужно вручную дефокусировать входные данные, чтобы не допустить повторного ввода текста.:/