2012-11-14 10 views
5

Gần đây tôi đã cập nhật jquery ui và plugin tự động hoàn thành của nó - tuy nhiên trong phiên bản mới hơn, nó sẽ không cho phép tôi chọn các tùy chọn chỉ với một cú nhấp chuột và tôi phải sử dụng mũi tên lên và xuống. Làm cách nào để kích hoạt lại lựa chọn qua nhấp chuột?Jquery UI Tự động hoàn tất không cho phép các tùy chọn được chọn bằng chuột nữa

Btw phiên bản mới là 1.9.1, phiên bản cũ là 1.8.2

+0

bạn vẫn có thể chọn qua chuột trong giao diện người dùng 1.9.1. Hãy thử sử dụng ví dụ ở đây: http://jqueryui.com/autocomplete/ Bạn có thể đăng một số mã không? – Elliott

+0

Hi Elliott - bản demo hoạt động chính xác, nhưng trên hai trang tôi đang sử dụng plugin tôi không thể chọn bằng chuột. Phải là một xung đột ở đâu đó. Nếu tôi có cơ hội, tôi sẽ xem xét những gì gây ra nó và gửi dưới dạng lỗi – coalvilledave

+0

Bạn có thể cung cấp bất kỳ mã nào không? – Dom

Trả lời

4

Trong trường hợp của tôi khả năng lựa chọn chuột bị vô hiệu hóa bởi một bên thứ ba jQuery plugin lỗi thời. Chủ đề này đã cho tôi ý tưởng về những gì có thể sai: http://forum.jquery.com/topic/autocomplete-click-to-select-item-not-working-in-1-9-1

Tôi đang sử dụng phiên bản cũ của plugin xác thực jquery (https://github.com/jzaefferer/jquery-validation). Tôi đã vô hiệu hóa một plugin sau một plugin khác để xem plugin nào gây ra hành vi sai trái.

+0

Cảm ơn bubblez, đã khắc phục sự cố cho tôi, bạn đã tiết kiệm được số giờ của tôi :) –

+0

Đối với tôi, hóa ra đó là một lời gọi để stopPropagation() trên một cú nhấp chuột trong cơ thể, ví dụ: $ ("body"). click (function (e) {e.stopPropagation()}; tìm mã như thế này và bình luận ra stopPropagation() – Asmussen

+0

Cảm ơn, Điều đó đã sửa nó –

1

tôi đã cùng một vấn đề, thậm chí sử dụng phiên bản mới nhất của jquery-ui có sẵn tại thời 1.11.4

Kiểm tra mã nguồn trong file jquery-ui.js tôi tìm thấy một mảnh như thế này:

"click .ui-menu-item": function(event) { 
        var target = $(event.target); 
        if (!this.mouseHandled && target.not(".ui-state-disabled").length) { 
         this.select(event); 

         // Only set the mouseHandled flag if the event will bubble, see #9469. 
         if (!event.isPropagationStopped()) { 
          this.mouseHandled = true; 
         } 

vấn đề là mouseHandled var thiết lập để true. Nhưng nó chỉ xảy ra nếu tuyên truyền event chưa được dừng lại.

Vì vậy, giải pháp tôi định nghĩa autocomplete của tôi như thế này:

$('.autocomplete').autocomplete({ 
    source: ['value1','value2','value3','value4'], //my source 
    select: function(event, ui){ 
    event.stopPropagation(); //the select event will work next time you click 
    //your logic comes here ... 
    } 
}) 

Nó làm việc cho tôi, tôi hy vọng nó hoạt động dành cho bạn! =)