Autor Zpráva
Mároš
Profil
Ahoj :)

Mám selectbox:
<select name="id_divize" id="id_divize-form">
<option value="1">Firma komplet</option>
<option value="1_1">Prvni firma prvni divize</option>
<option value="1_23">Prvni firma druha divize</option>
</select>

Po změně prvku potřebuju zavolat js fci, která mi vrátí json data pro další plnění formuláře. To by bylo OK, ale já to potřebuju i bez change, pro první hodnotu toho selectu.
Když změním select a vyplňuji dál form, ta ajax fce se mi volá dvakrát. Jednou s ID 1 (první položka select boxu), a pak s ID 23 (vybraná (changed) položka select boxu), což je špatně :-)

Jak se takovéhle situace řeší? Stačí mi poslat nějaký howto, klidně v eng... Já ani nevim pod čím to hledat :D

Díky Mára
Chamurappi
Profil
Reaguji na Mároše:
Jak se takovéhle situace řeší?
Vygeneruje se ten formulář ve výchozím stavu rovnou tak, jak má vypadat. Ptát se serveru hned při načtení na další data je zbytečné, když jsi už při generování HTML věděl, jaká ta data budou.

Mimochodem, kolik toho, co se mění, je? Jestli málo, nejde to vyřešit úplně bez AJAXu?
Mároš
Profil
Díky za odpověď :-)
Chamurappi:
Vygeneruje se ten formulář ve výchozím stavu rovnou tak, jak má vypadat.
To je nemožný. Na základě tohodle selectu potřebuju získat data pro dva text inputy a jeden další select box. Text inputy se plní na základě jquery pluginu autocomplete - pošlu ajax požadavek s query a id dané divize, a na základě toho vrátím data.

Všechno mi to funguje, až na tuhle jednu celkem nepříjemnou věc, že se mi duplikují ony ajaxový požadavky.
Chamurappi
Profil
Reaguji na Mároše:
že se mi duplikují ony ajaxový požadavky
Tak to bude asi vina jQuery. Když použiješ AJAX bez frameworku, problém nenastane, že?

To je nemožný. Na základě tohodle selectu potřebuju získat data pro dva text inputy a jeden další select box.
Ale když to HTML generuješ, tak víš, co je vybrané. Proč tedy rovnou nevyplníš i ty dva <input>y a jeden další <select> tím, co tam patří pro danou hodnotu?

pošlu ajax požadavek s query a id dané divize, a na základě toho vrátím data
Kolik těch dat je? Nejde to vyřešit bez AJAXu? Řada programátorů zkouší patlat AJAXem i to, k čemu dodatečná komunikace klienta se serverem není potřeba.
Mároš
Profil
Chamurappi:
Když použiješ AJAX bez frameworku, problém nenastane, že?
To jsem nezkoušel abych pravdu řekl.
Ale když to HTML generuješ, tak víš, co je vybrané
Pravda, to mě nenapadlo. S tím jedním selectem to bude v pohodě, a tomu text inputu (autocomplete) bych mohl předat samotnej json, a při change nechat volat tu funkci... TO by šlo :) Vyzkouším, a dám vědět jak to dopadlo. Díky za nakopnutí
Mároš
Profil
Fixed! Řešení je nakonec vcelku triviální, jen ta moje neznalost... S js asi nebudeme nikdy kamarádi :D

Trik je v tom, přidat na ono onChange trigger('change')... Takže to nakonec vypadá cca tak nějak
$('#id_divize-form').on('change', function(){

//zpracování a zavolání daných js ajax funkcí

}).trigger('change');

Funguje to tak, že na defaultní (předvybrané) hodnoty se použije to stejné co při onChange. A o to mi šlo :)

I tak díky za nakopnutí

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: