在我的 Angular 应用程序的几个地方,我需要使用 ESC 键清除用户的输入。问题是,我不知道如何使用文本输入字段(textarea 清除 OK)。看到这个小提琴:
捆绑:
<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 keydown 上的输入字段重置为以前的状态,所以它弄乱了我的模型。因此,'keyup' 清除模型,'keydown' 检查模型是否为空并执行适当的操作。我还需要手动散焦输入以防止文本重新弹出。:/