Autor Zpráva
DomX
Profil *
Zdravím všechny Javascriptaře!

Potřebuju poradit...

Mám formulář, 2 tlačítka... a ideálně bych potřeboval každýmu tlačítku nastavit jiný action.
Podotýkám, že se chci vyhnout něčemu, jako value ve skrytém poli a podobně... zkrátka, jak píšu, chci změnit hodnotu formuláře "action". Jde to?

Díky za reakce!
sysel
Profil
Nevím zcela jistě, ale zkusil bych:

<input type="button" name="prvni" value="někam" onclick="this.form.action='http://www.nekam.com/'; this.form.submit()">
<input type="button" name="druhy" value="jinam" onclick="this.form.action='http://www.jinam.com/'; this.form.submit()">
Chamurappi
Profil
Reaguji na DomXe:
Jde to, ale nedoporučuji. Počítáš s případem, že člověk nemá zapnutý JavaScript?

se chci vyhnout něčemu, jako value ve skrytém poli a podobně
Skryté pole nepotřebuješ. Pokud má odesílací tlačítko name, při stisku se odesílá jeho value a podle ní můžeš na straně serveru snadno rozhodnout, co s daty udělat (klidně můžeš i přesměrovat).
Domxxx
Profil *
Díky, oběma.

A teď zvlášť to sysel: toto jsem zkoušel, je to vykopávka z dob IE5 (aspoň mám takovej dojem...) a nefunguje to. Respektive mně to nejelo a myslím si, že přistupování k akci formuláře pomocí tohoto postupu bohužel nejde. (this.form.action je objekt null)

To Chamurappi: jo počítám, je to "vlastnost" SW, takže zákazník tak jako tak bude muset mít JS zapnutý.

Nakonec jsem to vyřešil s tím tlačítkem name ještě dřív, než to tu bylo zmíněno ;-), s tím, že teď musím odeslat formulář do odesílajícího skriptu a na základě name případně přesměrovat s uložením do session někam jinam... (jednou output vyplněného formuláře do "stažení" CSV souboru, druhé - jíná stránka se zpracováním dat...)

Ale stejně by mě zajímalo, jestli to jde tím JS, bylo by to jednodušší...
sysel
Profil
V zásadě spíš souhlasím s Chamurappim, ale ten svůj pokus jsem zkoušel a funguje.
Objekt this.form je null pokud jsou ty buttony v "luftě". Jsou-li uvnitř nějakého <form>u není důvod, proč by to nefungovalo.

Opodstatnění pro tento způsob je pouze v případě, že stránka je odeslána ze serveru, který provádění skriptů neumožňuje a formulář zpracovat umějí jenom ty cílové odkazy.
_es
Profil
Domxxx:
this.form.action je objekt null
sysel:
Objekt this.form je null pokud jsou ty buttony v "luftě".

Ak sú "v lufte", alebo nie je žiadúce ich mať vo formulári, tak sa dá miesto this.form použiť document.forms.
habendorf
Profil
Ak sú "v lufte", alebo nie je žiadúce ich mať vo formulári, tak sa dá miesto this.form použiť document.forms.

A nebo univerzálně d.gEBI.

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: