2012-11-14 22 views
5

Niedawno zaktualizowałem jquery ui i jego autouzupełnianie wtyczkę - jednak w nowszej wersji nie pozwala mi wybrać opcji za pomocą kliknięcia myszką i muszę użyć strzałki w górę i w dół. Jak ponownie włączyć zaznaczenie za pomocą kliknięcia myszą?Autouzupełnianie UI JQuery nie pozwala na wybór opcji myszą

Btw nowa wersja jest 1.9.1, 1.8.2 stara wersja była

+0

nadal można wybrać za pomocą myszy w interfejsie użytkownika 1.9.1. Spróbuj użyć przykładu tutaj: http://jqueryui.com/autocomplete/ Czy możesz napisać jakiś kod? – Elliott

+0

Witam Elliotta - wersja działa poprawnie, ale na dwóch stronach, na których używam wtyczki, nie mogę w ogóle wybrać myszą. Gdzieś musi być konflikt. Jeśli dostanę szansę, sprawdzę, co go powoduje i zgłoś jako błąd – coalvilledave

+0

Czy możesz podać dowolny kod? – Dom

Odpowiedz

4

W moim przypadku możliwości wyboru mysz została wyłączona przez przestarzałej cywilnej plugin jQuery. Wątek ten dał mi pojęcie, co może być nie tak: http://forum.jquery.com/topic/autocomplete-click-to-select-item-not-working-in-1-9-1

Użyłem starej wersji wtyczki do sprawdzania poprawności jquery (https://github.com/jzaefferer/jquery-validation). Wyłączyłem jedną wtyczkę po drugiej, aby zobaczyć, co było przyczyną niewłaściwego zachowania.

+0

Dzięki bubblez, który naprawiłeś to dla mnie, zaoszczędziłeś mi godziny :) –

+0

Dla mnie okazało się to wezwaniem do stopPropagation() na kliknięciu w ciało, np. $ ("body"). click (function (e) {e.stopPropagation()}, poszukaj kodu takiego jak ten i skomentuj stopPropagation(). – Asmussen

+0

Dzięki, To naprawiłem –

1

miałem ten sam problem, nawet przy użyciu najnowszej wersji jquery-ui dostępnych w czasie 1.11.4

Sprawdzanie kodu źródłowego w pliku jQuery ui.js znalazłem kawałek takiego:

"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; 
         } 

problemem jest mouseHandled var zestaw do true. Ale dzieje się tak tylko wtedy, gdy propagacja event nie została zatrzymana.

więc jako rozwiązanie zdefiniowałem mój autouzupełniania takiego:

$('.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 ... 
    } 
}) 

pracował dla mnie, mam nadzieję, że pracuje dla Ciebie! =)

Powiązane problemy