Autor Zpráva
Honzaaa
Profil *
Prosím o radu. Mám následující kód:
<input name=kdo type=text>
<button>Ano</button>
<button>Ne</button>

No a potřeboval bych na každý button dát onclick tak, aby po kliknutí na button se mi načetla stránka s parametrem, který je v inputu.

Řeším to takto, ale zjevně je to špatně:
<input name=kdo id=kdo type=text>
<button onclick='window.location.href=index.php?kdo=kdo.value&vysledek=ano'>Ano</button>
<button onclick='window.location.href=index.php?kdo=kdo.value&vysledek=ne>Ne</button>

Javascript neovládám ale vzhledem k tomu, že jeden formulář nemůže mít dvě odesílací tlačítka a zde to situace vyžaduje, domníval jsem se, že to snadno nahradím buttony s javascriptem, ale už hodinu zkouším různé možnosti a nedaří se
... prosím o radu jak to má být správně, věřím, že pro zkušené to je brnkačka :-)
předem díky
Str4wberry
Profil
V novějších prohlížečích než Explorer 6, nejsou dvě odesílací tlačítka problém*.

*) Při zachování požadované struktury adres.
Honzaaa
Profil *
Str4wberry:
moc děkuji, to jsem vůbec netušil ... alespoň se nemusím prát s javascriptem :-)
Darker
Profil
Musíš rozlišovat ve skriptu textové řetězce.
Když chceš změnit adresu musíš cílovou adresu dát do uvozovek:
location.href = "index.php?vys=ano"
A hodnotu inputu s názvem ano nezjistíš přes kdo.value.
Každý element formuláře (input, čudlík) má vlastnost form což je objekt nadřazeného formuláře. Tem má zaas naopak vlastnost např. kdo, která ukazuje na input(y) s názvem kdo.
Co chceš:
<form method="get" action="index.php">
   <input name="kdo" type="text" />
   <input type="submit" value="ano" name="vysledek"/><input type="submit" value="ne" name="vysledek" /> 
</form>
Žádný javascript není potřeba, odešle se kliknuté tlačítko a input se jménem kdo.


Jak dostat value jiného inputu ve formuláři:
<form method="get" action="index.php">
   <input name="kdo" type="text" />
   <input type="button" value="Řekni" onclick="alert(this.form.kdo.value)"/>
</form>
Honzaaa
Profil *
Darker:
děkuji za vysvětlení, alespoň vím, co jsem dělal špatně. Každopádně, raděju půjdu tou cestou bez javascriptu. Především jsem se tam totiž ještě pral s těma uvozovkama, tuhle část kódu jsem totiž generoval přes php, tedy za echo byly jedny uvouovky (dvojité), za onclick= jsem použil druhé uvouovky (jednoduché) a za location.href bych musel použít už asi jedině trojté uvozovky :-D které nejsou .... asi by i to šlo nějak vyřešit, ale pro mě už to byl uvozovkový masakr :-)
Chamurappi
Profil
Reaguji na Str4wberryho:
V novějších prohlížečích než Explorer 6
V čem by byl problém u Exploreru 6 a starších?
Darker
Profil
Honzaaa:
pral s těma uvozovkama
echo "<input type=\"text\" onclick=\"alert('Hodnota inputu \\'pepa\\': '+ this.value)\" name=\"pepa\">";
V PHP můžeš escapovat uvozovky backslashem. Pokud chceš vygenerovat escapované uvozovky do javascriptu, budou to backslashe dva. Backslash dělá obecně ze speciálního znaku normální a naopak. Tady udělá ze speciálního znaku normální znak backslash. Co nebude fungovat je toto:
<input type="text" onclick="alert(\"BAF\")">
V html ti escapování neprojde, musíš použít apostrofy.
Honzaaa
Profil *
Darker:
jak snadné :-) ... no mám se ještě hodně co učit ... díky
Str4wberry
Profil
V čem by byl problém u Exploreru 6 a starších?

Staří Explorerové odešlou pokaždé všechny <button type=submit>y, ne jen ten, na který bylo kliknuto. (Také odesílají vnitřek značky místo value, ale to by tu nemuselo vadit.)

Pokud tedy člověk nemůže použít více <input type=submit>ů (které touto vlastností netrpí), vícenásobné <button>y mu v nich fungovat nebudou.

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: