Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] odświeżanie zawartości selecta
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
JoShiMa
Mam taką zagwozdkę. W formularzu mam select z jakimiś opcjami. Poza tym mam w tym formularzu elementy za pomocą których mogę podmienić opcje w znacznikach. Sęk w tym, że aby zobaczyć zmianę muszę kliknąć na selecta, a wolałabym, żeby odświeżał się sam.

Teraz robię tak, że po odebraniu danych z ajaxa wywołuję:
  1. $('#url_id').html(data);


Gdzie 'url_id' to id znacznika select.
by_ikar
Musisz takiego selecta zbindować, i następnie go "zmienić" metodą change. A może to wyglądać tak:

[JAVASCRIPT] pobierz, plaintext
  1. $("#url_id").change();
  2.  
  3. $("#url_id").bind("change", function() {
  4. // something
  5. });
[JAVASCRIPT] pobierz, plaintext


W ten sposób już na starcie zostaje wywołany bind, pod który podpiętą masz metodę changę, która wyszukuje zmian w scelect.
JoShiMa
Czy dobrze rozumiem, że tam gdzie //something mam wrzucić całą obsługę ajaxa i podmianę zawartości?

Nie bardzo łapię, bo ajax jest wywoływany kliknięciem na button
by_ikar
Ahh nie rozumieliśmy się wink.gif tak, w przypadku kiedy wybierasz coś z listy i tym wyborem z listy chciałbyś coś zmienić, np do innego selecta doczytać jakieś dane poprzez ajax, to w tym // something dokładasz to swoje żądanie ajaxowe. W przypadku kiedy chcesz tylko zmienić "zaznaczoną" jakąś wartość w select, poprzez kliknięcie gdzieś tam, to już trochę inna bajka, bo wtedy w tym select masz jakieś tam option, i albo ono musi mieć konkretne ID, albo konkretną wartość, albo musisz wiedzieć które w kolejności jest dane option, które chcesz zaznaczyć. Do tego butona przypisujesz zdarzenie "click" i w nim dokonujesz całej reszty. I jeżeli masz już takie zdarzenie przypięte, wystarczy że dodasz chociażby poprzez attr('selected', 'selected'); że dany option jest "zaznaczony". Nie wiem czy dobrze ci to wytłumaczyłem.. Lepiej jakbyś nieco więcej kodu pokazał, to na jego podstawię mogę ci pokazać jak mógłbyś to zrobić.
JoShiMa
Ale ja chcę usunąć wszystkie option i wczytac nowe. AJAX zwraca mi gotowy kod HTML (z listą nowych option). Ale może to błąd.

Jeszcze raz. Mam select z opcjami, mam input i button. Wpisuję coś w input, klikam button. W funkcj click buttona, odczytuję dane z inputa, wykonuję zapytanie AJAX, któe mi zwraca nową zawartość selecta. No i chcę usunąć całą starą zawartość selecta i wstawić nową. No.

Samo $('#url_id').html(data); nie wystarcza, bo żeby zobaczyć tę zmianę to trzeba jeszcze kliknąć na tego selecta.

Wytłumaczyłes mi dobrze, ale nie to co ja chciałam zrozumieć. HI HI HI

Aha już wiem. Trzeba na końcu zrobić
$('#url_id').trigger('change');

I jak mam sobie sama kliknąć "pomógł"?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.