biểu mẫu jQgrid chứa một số hộp tự động hoàn thành jQueryUI.cách kiểm tra xem hộp thả xuống tự động hoàn thành jqueryUI đã mở chưa
Trong trình xử lý sự kiện nhấn phím Esc, chỉ cần xử lý nhấn phím nếu hộp thả xuống tự động hoàn tất không mở. Nếu trình đơn thả xuống tự động hoàn tất được mở, Esc nhấn shoult sẽ thực hiện hành động mặc định của nó chỉ (đóng menu thả xuống và hủy lựa chọn).
Cách kiểm tra xem trình đơn thả xuống tự động hoàn tất đã được mở chưa? Nó có thể kiểm tra cho bất kỳ hộp tự động hoàn thành đã được mở trong cơ thể tài liệu.
jQuery.extend(jQuery.jgrid.edit, {
beforeShowForm: function ($form) {
var gridIdEncoded = $.jgrid.jqID($form[0].id.substring(8));
$("#editmod" + gridIdEncoded).bind('keydown.formEvent', function (e) {
if (e.which === 27) {
// Todo: How invoke click only if any autocomplete dropdown is not opened
$("#TblGrid_" + gridIdEncoded + "_2 #cData").trigger("click");
return false;
}
});
}
});
Cập nhật
tôi đã cố gắng TS Molle câu trả lời bằng
if (e.which === 27) {
alert($('.ui-autocomplete.ui-widget:visible').length);
if ($('.ui-autocomplete.ui-widget:visible').length != 0)
// dropdown is open, allow default behaviour
return;
nhưng $. ('Ui-autocomplete.ui-phụ tùng:. Có thể nhìn thấy') chiều dài là 0 nếu esc được nhấn (nó là 1 nếu phím khác được nhấn và thả xuống được mở). Dường như việc gây ra Esc gây ra hành vi mặc định tự động hoàn tất trước tiên wthis đóng menu thả xuống. Chỉ sau khi xử lý của tôi là thực thi mà không thấy rằng thả xuống được thực hiện.
Cách khắc phục sự cố này?
Tôi không hiểu câu trả lời này. Thao tác này sẽ chặn đóng menu thả xuống tự động hoàn tất. Tôi có nên sử dụng tính năng thêm tự động hoàn tất này theo cách thủ công trong phương thức 'keydown.formEvent' không? Bạn nên sử dụng mã nào để đóng menu thả xuống? – Andrus