
Značka <button>
Tlačítko <button> v HTML, možné problémy v Internet Exploreru a jak je vyřešit.
HTML značka <button> slouží k vytvoření tlačítka. Je hodně podobná značce <input> s atributem type nastaveným na button, submit nebo reset — <button> má tyto typy stejné.
Typický zápis:
<button type="submit" name="tlacitko" value="hodnota">
Text tlačítka
<button>
Element <button> jde docela dobře stylovat.
Použít <input>, nebo <button>?
Podstatný rozdíl mezi značkami je, kromě různých druhů (<input> je povinně nepárový, <button> povinně párový), že do značky <button> je možné umístit další HTML kód.
Internet Explorer
Ve starších versích IE nebo i v novějších v QUIRK režimu se kolem značky <button> točí řada rozdílů.
Více odesílacích tlačítek
V IE 6 a starších se při použití více <button> tlačítek neodešle jen to, na které bylo kliknuto, ale úplně všechna <button> tlačítka.
Po odeslání se v IE 6 v URL objeví …&vysledek=Ano&vysledek=Ne, ačkoliv se zmáčklo jen jedno tlačítko.
Obsah značky místo value
Další nepěkná věc je, že starší IE odesílá jako hodnotu políčka obsah mezi <button> a </button> místo atributu value, který má značka nastavený.
Tlačítko Odeslat má value nastavenou na Ano, přesto se v IE 7 a starších (v QUIRKu do IE 9 včetně) odešle obsah značky, tj. Odeslat (JavaScriptovou terminologií innerHTML).
Neodeslaní bez kliknutí
Další problém je neodeslání tlačítka v případě, kde se formulář odešle Enterem z jiného políčka. Tím trpí IE 8 a starší (nezávisle na <!doctype>).
Co s tím?
Nepoužívat ve formulářích
<button>, ale<input>s odpovídajícímtypem.Zpracovávat formuláře na straně serveru tak, aby podoba, ve které se
<button>odešle, nehrála roli. Tj. zda byl formulář odeslán testovat jiným políčkem. (Případně si potřebná data, která by mohl odesílat<button>uložit do<input type=hidden>— ten funguje spolehlivě.
Související články
Odeslání formuláře tlačítkem mimo něj
Jak odeslat formulář tlačítkem, které je mimo formulář.
Resetování <input type=file>
Jak resetovat (odstranit) hodnotu z <input>u pro upload souborů.
