Autor Zpráva
Honza_n
Profil *
Ahoj
Mám takovou funkci, která reaguje na to, když uvnitř select vyberu option. Když to udělám ručně tak to funguje. Ale když to udělám pomocí tlačítka:

<button onclick="$("select.myselect").val("nová hodnota")" value="nová hodnota">


tak ta funkce .change() nezareaguje.

Aby jste tomu rozuměli. Mám ve formuláři udělaný selecty, ale navíc k tomu přidávám pár malých tlačítek, které dělají to samé co ty selecty. Zmáčknu tlačítko, vybere se mi nějaká volba na selectu. Tím urychluji práci s tím formulářem. Takže když to vyberu přes select, tak to funguje, když select vyberu přes tlačítko, tak to nefunguje. Díval jsem se ještě na funkci .select() ale s tou užž to nejede vůbec.
Honza_n
Profil *
Teď mě napadlo, že možná je chyba u toho tlačítka. Já tam měním jen tu hodnotu.

onclick="$('select[name=rod]','fieldset#gramar').val('m');"


A možná bych měl změnit taky to selected="selected" a nastavit to na jiný option. Mohlo by to být tím a jestli jo tak jak to udělat?
Kajman_
Profil *
Asi hledáte jednu z těchto funkcí
http://api.jquery.com/trigger/
http://api.jquery.com/triggerHandler/
Honza_n
Profil *
Díval jsem se na tu funkci trigger() a na ten příklad co u toho je, ale nerozumím tomu. Nevím s jakým prvkem to mám svázat. Má to být ten select:

$('select[name=rod]','fieldset#gramar').trigger('change');


nebo to tlačítko?

$('input[name=rod]','fieldset#buttons').click(function(){
$('select[name=rod]','fieldset#gramar').trigger('change');
});
Nox
Profil
"trigger" znamená něco spustit, tady je to manuální vyvoláí eventu

tzn. pokud tvoje tlačítko něco změní a nevyvolá samo "change" event, ty ho vyvoláš sám přidáním .trigger()
Kajman_
Profil *
Možná pošlete ukázku toho, co vám nefunguje. jQuery select mění vyběr optionu díky val() normálně. Ty odkazy jsem tam psal proto, že mi přišlo, že vám nefunguje nabindovaná funkce na událost change u toho selectu. Ta se těmi funkcemi dá zavolat po té, co ručně upravíte výběr v selectu díky val().
Honza_n
Profil *
Nox:
Jinými slovy, pokud nechci použít v html např. onclick a onchange tak to udělám pomocí triggeru?
Honza_n
Profil *
Tlačítko pro výběr
<select name="rod" >
  <option value="m">mužský</option>
  <option value="z">ženský</option>
  <option value="s">střední</option>
</select>
<em>rod</em>


Rychlé tlačítka pro rychlý výběr selectu:
<input class="rod" name="musc" type="button" size=10 value="muž." title="Mužský rod" onclick="$('select[name=rod]','fieldset#gramar').val('m');">
<input class="rod" name="fem" type="button" size=10 value="žen." title="Ženský rod" onclick="$('select[name=rod]','fieldset#gramar').val('z');">
<input class="rod" name="neut" type="button" size=10 value="stř." title="Střední rod" onclick="$('select[name=rod]','fieldset#gramar').val('s');">


Funkce:
$(document).ready(function() {
  ro=$("select[name=rod]","fieldset#gramar");
  ro.change(function () {
      $(ro,"option:selected").each(function () {
      nastav_vzory();
      });
  });
});
Honza_n
Profil *
Tady je celý kód, pro otestování
<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
function nastav_vzory(){
alert("OK");
}
$(document).ready(function() {
  ro=$("select[name=rod]");
  ro.change(function () {
      $(ro,"option:selected").each(function () {
      nastav_vzory();
      });
  });
});
</script>

</head>
<body>
<select name="rod" >
  <option value="m">mužský</option>
  <option value="z">ženský</option>
  <option value="s">střední</option>
</select>
<em>rod</em>

<input class="rod" name="musc" type="button" size=10 value="muž." title="Mužský rod" onclick="$('select[name=rod]').val('m');">
<input class="rod" name="fem" type="button" size=10 value="žen." title="Ženský rod" onclick="$('select[name=rod]').val('z');">
<input class="rod" name="neut" type="button" size=10 value="stř." title="Střední rod" onclick="$('select[name=rod]').val('s');">
</script>
</body>
</html>


Chyba je v tom, že když kliknu na na tlačítka funkce není volána.
Kajman_
Profil *
$('select[name=rod]').val('m').trigger('change');
Honza_n
Profil *
Kajman:
A to mám dát kam (spouštět čím)?
Honza_n
Profil *
Už jsem to pochopil. To je do toho buttonu. Tak už to funguje a díky tedy.

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: