5

Làm cách nào để ngăn chặn trình đơn thả xuống từ chối khi mục được chọn? Tôi đã thử sử dụng preventDefault như thế này:Ngăn chặn trình đơn thả xuống typeahead.js kết thúc vào lựa chọn

$('#q').bind('typeahead:selected',function(obj, datum, name) { 
      ... 
      obj.preventDefault(); 
     }); 

Nhưng không thành công.

Edit: tôi đã quản lý để "sửa chữa" này bằng cách xây dựng Typeahead với dòng 217-218 nhận xét từ typeahead_views.js:

byClick && utils.isMsie() ? 
     utils.defer(this.dropdownView.close) : this.dropdownView.close(); 

Nhưng đó có phải là một cách khác mà không sửa đổi các tập tin nguồn?

Trả lời

0

Kích hoạt tiêu điểm của đầu vào trên cuộc gọi lại đã đóng.

$('#typeahead-input').on('typeahead:closed', function(e, d) { 
     $('#typeahead-input').focus(); 
    }); 
+0

Tôi thấy rằng điều này vẫn đóng menu thả xuống. –

0

Tôi đang làm việc trên typeahead bên trong tokenfield vì vậy phần đầu tiên là tôi truy cập vào đối tượng Typeahead.dropdown, mà chính nó đã đi săn.

Đã cố gắng đùa giỡn với isOpen hoặc ghi đè close chức năng, cuối cùng tôi nhận được điều này. Phá vỡ sự sắp xếp của các sự kiện. Bạn sẽ phải thực hiện lại bất kỳ việc lưu các giá trị nào, về cơ bản 3 dòng đầu tiên của Typeahead.select.

Bản thân tôi đã bị chặn khi có thể đặt biểu mẫu (tiêu điểm ở trường nhập) trong trình đơn thả xuống và vẫn còn săn hơn một chút nếu đặt một thứ tương tác trong đó. Hãy suy nghĩ tôi sẽ đi cho một giải pháp roll-riêng của bạn trên này nhưng có thể giúp một người chỉ muốn chặn đóng cửa, đặt chức năng ban đầu trong một var để đưa nó trở lại tại chỗ khi bạn đã hoàn tất.

$('input[id="test"]').data('bs.tokenfield') 
    .$input.data('ttTypeahead').dropdown.trigger = function(e) {}; 

Ngoài này có tiềm năng:

$('input[id="test"]').data('bs.tokenfield') 
    .$input.data('ttTypeahead').eventBus.trigger = function(e) {}; 
0

Một cách đơn giản hơn:

 input.data('tt-typeahead')._selectOld = input.data('tt-typeahead')._select 
    input.data('tt-typeahead')._select = function(datum) { 
     if (false) 
     this._selectOld(datum) 
    } 
0

Đã cùng một vấn đề và (rất dễ dàng), giải pháp dường như không được ghi chép lại bất cứ nơi nào

$(document).on('typeahead:beforeclose', function(event, data) { 
    event.preventDefault() 
}) 

(điều này chỉ ngăn cản dr opdown từ đóng cửa ở tất cả mà có thể rất hữu ích trong quá trình phát triển, sử dụng 'typeahead:beforeselect' nếu bạn muốn ngăn chặn đóng cửa chỉ trên selet).

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