Autor Zpráva
Joker
Profil
Po dlouhé době jsem narazil na zajímavý problém v HTML.

Mám formulář, s jehož daty se dělají různé věci podle toho, na které tlačítko uživatel klikne.
Potud normálka, vloží se víc odesílacích tlačítek a odesílá se hodnota toho, na které uživatel klikl.

Formulář má ovšem být lokalizován do více jazyků, takže je dost nepraktické kontrolovat hodnotu odesílacího tlačítka, což je zároveň text na tlačítku (každá jazyková mutace může mít jiný).
Jedna možnost je dát tlačítkům různé hodnoty name, držet si jejich seznam a testovat, která z nich je nastavená (a ve value pak může být cokoliv).

Mě by ale zajímal názor na jiné řešení:
Odesílací tlačítko může mít <label>, který na kliknutí taky odešle formulář. Takže by šlo samotný <input> udělat skrytý (asi ale ne přes display:none), nastavit mu konstantní hodnotu jakou potřebuji a viditelné tlačítko s přeloženým textem dát do <label>.
Nějak takhle:
<label> <input type="submit" name="jmeno" value="mojehodnota" class="neviditelny"> <!-- input bude nastylovaný aby nebyl vidět -->
<span class="tlacitko">Přeložený odesílací text</span>
</label>

Asi hlavní problém co mě napadá, jestli existují prohlížeče, u kterých kliknutí na <label> odesílacího tlačítka neodešle formulář.
A bude to vypadat trochu divně s vypnutými styly, ale bude to funkční.
anonymni
Profil *
Joker:
a co nějaký hidden input s aktuálním jazykem?
Chamurappi
Profil
Reaguji na Jokera:
<button type="submit" name="jmeno" value="hodnota">
  <!--hodnota-->
  Přeložený odesílací text
</button>
Starší Explorerové posílají obsah <button>u místo value (jako by to byla <textarea>), proto jsem přidal ten komentář — na serveru pak musíš počítat s tím, že přijde buď sama hodnota, nebo <!--hodnota--> s textem.

Možná by bylo lepší použít procesní instrukci místo komentáře (tedy <?hodnota>), protože komentář může nějaká aktivní proxy spapat.
peta
Profil
Joker:
"existují prohlížeče, u kterých kliknutí na <label> odesílacího tlačítka neodešle formulář"
Myslim, ze jo, dokonce, ze label nepovazuji za aktivni. Urcite bych na to nespolehal. Asi bych pouzil javascript, treba input type=hidden.
Reseni od Chamurappi vypada zajimave. To osetreni pro starsi IE bych asi neresil.
A neslo by zrovna pouzit html5? Tam by to mohlo jit resit, ne?

Zajimava otazka by byla, ktera konkretni zarizeni neumi zpracovat takhle javascript, pro ktera to pises? Moji znami pouzivaji normalne IE / FF nebo neco na mac, k tomu program pro hlasove cteni. Prohlizec jim JS nijak neblokuje. Takze mne to strasne zajima, ktera jeste zarizeni zbyvaji, pro ktera ma takove reseni smysl.

OT
odkazy na html dokumentaci (button, type ...) v kodu #1 #3 nefunguji.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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