在我的Angular應用程序的幾個地方,我需要使用ESC鍵清除用戶的輸入。問題是,我不知道如何使用文本輸入字段(textarea清除OK)。看到這個小提琴:使用ESC鍵在AngularUI中清除輸入文本字段
jsFiddle demonstration of the problem
綁定:
<input ng-model="search.query" ui-keypress="{esc: 'keyCallback($event)'}" />
回調使用:
$scope.keyCallback = function($event) {
$event.preventDefault();
$scope.search.query = '';
}
任何人都可以,請找出什麼,我需要做的,清晰的文本輸入用ESC鍵?
SOLUTION: 作爲勸通過bmleite,你不應該聽 '按鍵' 但'的keydown'和'KEYUP'。問題在於,'keydown'在Firefox中不起作用,所以只有'keyup'才能聽取ESC的魔術。 ;)
工作小提琴:http://jsfiddle.net/aGpNf/190/
SOLUTION UPDATE: 最後,我不得不聽都 '的keydown' 和 'KEYUP' 事件。因爲在我的情況下,FF會將ESC keydown上的輸入字段重置爲之前的狀態,所以它會混淆我的模型。所以'keyup'清除模型,'keydown'檢查模型是否爲空並執行適當的操作。我還需要手動散焦輸入防止文本彈出回來:/
你能解釋一下你意思是解決方案更新? 聽起來好像它會幫助你,如果AngularUI將你的keyup包裝在'$ scope。$ apply()'中?如果是這種情況,你可以開一個問題嗎? 我也很好奇你的意思是文本彈出回來嗎?此外,您可以執行以下操作:'ui-keydown =「{'esc enter':'keyCallback($ event)'}」'任一鍵都將觸發事件。 – ProLoser
如果有人來到這裏,只是無法讓Chrome在Chrome中觸發...關閉Vimium插件或其他。 –
這似乎不再適用於Chrome或Firefox。我沒有在IE/Edge或Opera中測試過。 –