![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Witam,
kombinuję i nie mam pojęcia co zrobić. Wewnątrz formularza używam autocomplete z jQuery UI i chciałbym by w momencie wyboru elementu z listy i po naciśnięciu klawisza [ENTER] formularz nie był wysyłany. Po prostu chciałbym by wybrana wartość wskoczyła w pole i tyle. Kombinowałem z przechwyceniem klawisza [ENTER] na polu (wychwytuje), ale nie wiem co zrobić dalej. e.preventDefault() nie zadziałało, return false też nie. Oto mój kod:
PS: komunikat "Sraka" się pojawia w momencie wciśnięcia [ENTER] na liście podpowiedzi. // Edit: Widzę, że jednak jest to bug autocomplete :/ Cytat The list of suggestions [...] a Enter keypress will select the selected item (preventing the default form submit) or do nothing special when there is no selected item (allow the default form submit) http://wiki.jqueryui.com/Autocomplete Wie ktoś co z tym fantem zrobić? // Edit: (w miarę rozwiązane) Rozwiązałem to w ten sposób, może komuś się przyda lub ktoś poda lepsze rozwiązanie:
Ten post edytował phpion 4.09.2010, 13:16:23 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 0 Dołączył: 30.04.2004 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, przydało się. Dzięki temu formularz nie jest wysyłany, ale chciałem osiągnąć jeszcze jedno - że nawet jeśli myszką nie najadę na którąś z opcji i nacisnę enter zostanie wybrana ta właściwa (kod z pierwszego postu tego nie rozwiązuje).
Skorzystałem z https://github.com/scottgonzalez/jquery-ui-....selectFirst.js W kodzie wystarczyło dodać selectFirst: true na zasadzie jak poniżej: Kod $( "#city" ).autocomplete({ source: "tusciezkaphp", minLength: 2, delay: 0, selectFirst: true }); Zmieniając tak, akurat w moim przypadku jeśli ktoś wybiera miasto, a takie już istnieje, jeśli wpisze np. War a miasta w bazie to Warszawa i Warta i kliknie enter, zostanie wybrana pierwsza opcja. Idąc dalej, chciałem osiągnąć aby użytkownicy przez pomyłkę nie wybierali złego miasta przez wciśnięcie enter - tak jak powyżej wybierze jedno z tych miast, chociaż użytkownik może mieszkać w tym drugim, więc chciałem ograniczyć autouzupełnienie pola poprzez enter tylko do przypadku, gdy na liście jest już tylko jeden element - czyli przykładowo ktoś wpisze Wars na liście jest tylko Warszawa, to nie będzie musiał ani klikać ani wpisywać do końca tylko wciśnie enter - osiągnąłem to dokonując małej modyfikacji w JS do którego link dałem. Linię: Kod menu.activate( $.Event({ type: "mouseenter" }), menu.element.children().first() ); zamieniłem na Kod if( menu.element.children().length==1) { menu.activate( $.Event({ type: "mouseenter" }), menu.element.children().first() ); } i wygląda na to, że pięknie działa. Mam nadzieję że komuś się przyda |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 03:05 |