Ở một số nơi trong ứng dụng Góc của tôi, tôi cần xóa các đầu vào từ người dùng bằng phím ESC. Vấn đề là, tôi không biết làm thế nào để làm điều đó với các lĩnh vực đầu vào văn bản (textarea là xóa OK). Xem fiddle này:Xóa trường nhập văn bản trong Angular/AngularUI bằng phím ESC
jsFiddle demonstration of the problem
Binding:
<input ng-model="search.query" ui-keypress="{esc: 'keyCallback($event)'}" />
Callback tôi sử dụng:
$scope.keyCallback = function($event) {
$event.preventDefault();
$scope.search.query = '';
}
thể bất cứ ai, xin vui lòng, tìm ra những gì tôi cần phải làm gì để xóa nhập văn bản với phím ESC?
SOLUTION: Như adviced bởi bmleite, bạn không nên nghe cho 'bấm phím' nhưng đối với 'KeyDown' và 'KeyUp'. Vấn đề là, 'keydown' không hoạt động trong Firefox nên chỉ 'keyup' thực hiện thủ thuật ma thuật khi nghe ESC. ;)
fiddle làm việc: http://jsfiddle.net/aGpNf/190/
SOLUTION UPDATE: Cuối cùng tôi đã phải lắng nghe cả hai sự kiện 'KeyUp' 'KeyDown' và. Bởi vì trong trường hợp của tôi FF không thiết lập lại trường đầu vào trên ESC keydown để trạng thái trước đó, do đó, nó làm sai lệch mô hình của tôi. Vì vậy, 'keyup' xóa mô hình và kiểm tra 'keydown' nếu mô hình trống và thực hiện hành động thích hợp. Tôi cũng cần phải tự Defocus đầu vào để ngăn chặn văn bản popping lại:./
bạn có thể giải thích những gì bạn có nghĩa là bởi CẬP NHẬT GIẢI PHÁP? Có vẻ như nó sẽ giúp bạn nếu AngularUI kết thúc khóa của bạn trong một phạm vi '$. $ Apply()'? Nếu đó là trường hợp bạn có thể mở một vấn đề? Tôi cũng tò mò ý bạn là gì khi văn bản xuất hiện trở lại? Ngoài ra, bạn có thể thực hiện các thao tác sau: 'ui-keydown =" {'esc enter': 'keyCallback ($ event)'} "' và một trong hai khóa sẽ kích hoạt sự kiện. – ProLoser
nếu ai đó đến đây và chỉ không thể nhận được esc để cháy trong Chrome ... tắt plugin Vimium hoặc khác. –
Điều này dường như không còn hoạt động trong Chrome hoặc Firefox nữa. Tôi chưa thử nghiệm trong IE/Edge hoặc Opera. –