5

Tôi đang làm việc với combobox (đầu vào + thả xuống) được xây dựng xung quanh Bootstrap trên một dự án trợ năng.Bàn phím thả xuống đầu vào bootstrap arrow

Tôi đã thực hiện một thay đổi đã được thực hiện đối với phần dropdown.js của trình khởi động giữa v3.3.0 và v3.3.1 làm vi phạm mã của tôi.

Khi tiêu điểm là input, mũi tên lên hoặc xuống được sử dụng để kích hoạt trình đơn thả xuống mà tôi muốn vì mục tiêu là chỉ điều hướng bằng bàn phím nhưng không hoạt động nữa.

Khi tôi so sánh:

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.js

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.js

Sự thay đổi là từ (3.3.0, line 798)

Dropdown.prototype.keydown = function (e) { 
if (!/(38|40|27|32)/.test(e.which)) return 

Để (3.3. 1, dòng 799)

Dropdown.prototype.keydown = function (e) { 
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return 

Vì vậy, tôi biết tôi có thể có thể làm việc xung quanh nó với jQuery nhưng có một lý do thực sự cho sự thay đổi này? Nếu không, điều này có thể được coi là một báo cáo lỗi.

Dưới đây là bản trình diễn khởi động của tiện ích của tôi. Làm việc với Bootstrap 3.3.0 và bất kỳ thứ gì bên dưới nhưng nếu bạn thay đổi cửa sổ bật lên phiên bản bootstrap thành bất cứ điều gì ở trên 3.3.0, nó sẽ không phản hồi phím mũi tên.

http://www.bootply.com/2gHt0MWRWd

+0

Câu hỏi ..... –

+1

Tôi muốn biết rằng riêng tôi... – bbh

Trả lời

1

Hiện đang có một cuộc tranh luận đang diễn ra về việc này, as logged in issue 15757.

Việc điều chỉnh được thực hiện trong thao táC# 15088 (Dropdown: Ignore keydown events coming from inputs and textareas). Họ không nói "tại sao" nó là cần thiết để đi con đường đó trong bản phát hành, nhưng sau khi một số đào tôi đã có thể tìm thấy vấn đề/tranh luận liên quan đến một số nhà phát triển và đội Bootstrap.

Trong cuộc tranh luận đó, nó đã được đề cập rằng nó đã được bổ sung:

"để cho phép không gian để được gõ ra ở một đầu vào trong một danh sách thả xuống"

Họ vẫn đang động não một giải pháp, vì vậy tôi có thể đề nghị thêm hai xu của bạn vào cuộc tranh luận. Hi vọng điêu nay co ich.

0

Dưới đây là một sửa chữa cho nó:

$('[data-toggle="dropdown"]').keydown(function(e){ 
    if(e.which == 40){ 
    $(this).dropdown('toggle'); 
    } 
}); 

này chỉ kiểm tra cho vào mũi tên xuống (keycode 40)

See it in action here

Các vấn đề liên quan