Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Form events
Forum PHP.pl > Forum > Po stronie przeglądarki
foqz
Witam,

W jednym z przygotowywanych formularzu, natrafiłem na następujący problem:

- posiadam tam pole typu <select> z eventem onchange, który odsłania dalszą część formularza po wybraniu jednej z opcji owego select'a - w takiej sytuacji wszystko działa poprawnie.

- jednak wartość pola <select> o którym mowa powyżej może być opcjonalnie wybrana/narzucona (nie jest to reguła), przez js pochodzący z autocompletera - w takiej sytuacji po wyborze/narzuceniu wartości pola przez js nie pojawia się dalsza część formularza, czyli nie wykonuje poleceń zawartych w atrybucie onchange.

I tu nasuwa się pytanie jakiego event'u użyć, aby wychwycić zmianę wartości pola <select> przez "zewnętrzny" js.

Proszę o pomoc w związku z wyżej opisanym problemem.
Sephirus
Nie widzę problemu jeśli to jest na przykład jQuery to wykorzystaj wbudowany w autocomplete event:

[JAVASCRIPT] pobierz, plaintext
  1. $( ".selector" ).autocomplete({
  2. select: function(event, ui) { ... }
  3. });
  4.  
  5. // cytat z manuala
[JAVASCRIPT] pobierz, plaintext


Po wyborze z autocomplete możesz w ten sposób zadeklarować funkcję tą samą co przy normalnym selekcie. Jeśli korzystasz z innego autocompletera poszukaj w dokumentacji.
foqz
Sephirus, dzięki za naprowadzenie.

Korzystam z jQuery autocomplete, jednak nie chcę deklarować tej samej funkcji, która jest w normalnym selekcie, tylko ją wywołać. Powodem jest to, że funkcja w selekcie tworzona jest dynamicznie na poziomie php i jest dość złożona.

Zatem czy istnieje sposób na samo wywołanie onchange zadeklarowanego wcześniej w normalnym selekcie?
(pytanie to zadaję po nieskończonej ilości prób wywołania zdarzenia onchange zadeklarowanego już w selekcie, poprzez wypełnienie "..." w zasugerowanym przez Sephirus'a rozwiązaniu).
Sephirus
Jeżeli używasz jQuery do przypisania eventu do tego selecta czyli

[JAVASCRIPT] pobierz, plaintext
  1. $('#jakis_select').change(function () {...});
[JAVASCRIPT] pobierz, plaintext


To nie ma problemu - użyj wówczas w evencie select z autocomplete tym co podałem metody jQuery typu

[JAVASCRIPT] pobierz, plaintext
  1. $('#jakis_select').trigger('change');
[JAVASCRIPT] pobierz, plaintext


Metoda ta wywoła metodę przypisaną do tego selecta na evencie onchange tak jakby doszło do niego w sposób zwyczajny. Jeśli obsługujesz ten event inline (w html onchange="...") to musisz zobaczyć czy to tak zadziała ale powinno. Daj znać.
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.