![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Próbuje wdrożyć ten autocomplete: http://www.bewebdeveloper.com/tutorial-abo...ysql-and-jquery i działa ładnie z tym że posiadam naście identycznych inputów a autocomplete pojawia się tylko dla pierwszego.
Mój input wygląda tak: a kolejne inputy pojawiają się przy użyciu funkcji clone(), natomiast kod js prezentuje się tak:
więc jest minimalnie inny od tego z przykładu ponieważ w przykładzie opierał się na ID. Wiem że muszę dla każdego inputa nadać inne ID i dostosować do tego kod js tylko nie mam zielonego pojęcia jak, od czego zacząć? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Odpal sobie Developers Tool w przeglądarce i zobacz sobie jakimi błędami sypie
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Nie mam błędów, po prostu gdy ma np. 10 inputów to wpisanie w jednym powoduje wpisanie w wszystkich to samo.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Znowu nie rozrozniasz klasy od identyfikatora?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Znowu nie rozumiem o co chodzi i tu chyba mam największy problem (IMG:style_emoticons/default/biggrin.gif) przydałyby się nieco konkretniejsze wskazówki, coś co pobudzi do myślenia na razie nie wiem w którą stronę iść mimo że problem wydaje się być bardzo podobny do ostatniego nie mam pomysłu jak to ogarnąć.
EDIT. Ponieważ w js mam już podobna działającą funkcję datepickera próbowałem na podobnej zasadzie dopisać obsługę autocomplete, niestety rezultat nie przyniósł chcianych efektów. W chwili obecnej to mam:
Na próbę jak zrobię tak: Kod <li> <input type="text" class="ingredient" name="ingredient[]" onkeyup="autocomplet()" autocomplete="off" value="" /> <ul id="ingredient_list_id"></ul> <input type="text" class="datepicker" name="deliverydate[]" autocomplete="off" value="" /> </li> <li> <input type="text" class="ingredient" name="ingredient[]" onkeyup="autocomplet2()" autocomplete="off" value="" /> <ul id="ingredient_list_id"></ul> <input type="text" class="datepicker" name="deliverydate[]" autocomplete="off" value="" /> </li> i Kod $('button').on('click', function(event) { event.preventDefault(); var lines = $('#lines'); var i = 0; $('input.datepicker').datepicker("destroy"); lines.append(lines.find('li:first-child').clone()); $('.datepicker').each(function () { $(this).attr("id",'datepicker' + i).datepicker(); i++; }); }); $('input.datepicker').datepicker(); $( function() { $( "#datepicker" ).datepicker(); } ); // autocomplet : this function will be executed every time we change the text function autocomplet() { var min_length = 1; // min caracters to display the autocomplete var keyword = $('.ingredient').val(); if (keyword.length >= min_length) { $.ajax({ url: 'ajax_refresh.php', type: 'POST', data: {keyword:keyword}, success:function(data){ $('#ingredient_list_id').show(); $('#ingredient_list_id').html(data); } }); } else { $('#ingredient_list_id').hide(); } } function autocomplet2() { var min_length = 1; // min caracters to display the autocomplete var keyword = $('.ingredient').val(); if (keyword.length >= min_length) { $.ajax({ url: 'ajax_refresh.php', type: 'POST', data: {keyword:keyword}, success:function(data){ $('#ingredient_list_id').show(); $('#ingredient_list_id').html(data); } }); } else { $('#ingredient_list_id').hide(); } } // set_item : this function will be executed when we select an item function set_item(item) { // change input value $('.ingredient').val(item); // hide proposition list $('#ingredient_list_id').hide(); } Drugi input nie działa, tzn. nie ma podpowiedzi w ogóle, pierwszy input działa normalnie z tym że wybrana opcja pojawia się w wszystkich inputach. Ten post edytował lustfingers 31.03.2017, 18:08:27 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zauważ że wszędzie gdzie robisz `$('.ingredient').val();` to zawsze pobiera Ci pierwszy (chyba) input z tą klasą. Musisz to zmienić.
Oczywiście ID elementu MUSI być unikalne więc też musisz dodać zamiast `ingredient_list_id` jakąś unikalną nazwę dla każdego autocomplete. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki ostatecznie całkowicie usunąłem funkcję autocomplet() i set_item() a użyłem:
Teraz działa tak jak chciałe przynajmniej tak mi sie na razie wydaje (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Poprobuj w różnych przeglądarkach bo zdarzenie input nie wszędzie działało jeszcze.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 5 Dołączył: 18.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Chrome i mozilla ok a generalnie jest to do własnego użytku więc więcej mi nie potrzeba, mam jeszcze jedna sprawę z tym autocomplete ponieważ w chwili obecnej podpowiedzi się wyświetlają aż do momentu gdy:
1. kliknę na wybrana podpowiedź 2. wpiszę tekst którego nie ma w bazie 3. usunę wymagana ilość liter z inputa więc zaczynając wpisywać wyświetlają się podpowiedzi natomiast chcę aby po kliknięciu gdziekolwiek poza obszarem inputa i podpowiedzi okno podpowiedzi zniknęło. Gdy zrobię to tak:
to okno znika ale dopiero po 2 kliknięciu poza obszarem, oraz już podpowiedzi przestają sie całkowicie pokazywać dla dowolnego inputa. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:40 |