Nedávno jsem zase na jedněch stránkách řešil problém, proč mi Internet Explorer neodesílá formulář po vyplnění textového pole a stisknutí enteru, když ve Firefoxu to funguje normálně. Už jsem někde četl, že to je chyba Internet Exploreru, ale doposud jsem nevěděl, jak jednoduché je řešení.
Paradoxně jsem na webu nacházel spíše řešení pomocí JavaScriptu, kdy programátoři hlídají stisknuté klávesy a pokud se stiskne enter, odešlou formulář. Řešení je ale mnohem jednodušší.
Problém s odeslání formuláře enterem v IE nastane především v případě, že ve formuláři máte pouze jedno textové pole a jedno odesílací tlačítko. Ale stačí, abyste přidali do formuláře další textové pole (input type="text"). Aby vám textové pole nepřekáželo, můžete jej skrýt pomocí CSS vlastnosti display: none - to, že je textové pole skryté Internet Exploreru nevadí.
Jen poznámka: nestačí, abyste přidali pouze skrytou hodnotu (input type="hidden") - nejedná se totiž o textové pole a proto bude problém přetrvávat.
Zajímalo mě, co to je za chybu a tak jsem hledal i na anglických stránkách, ale například oficiální text od Microsoftu jsem nenašel. Pouze jsem na jednom fóru našel tuto větu: "There is an IE bug that prevents form submittion if there is only one textfield and one submit button.". V překladu to znamená, že Internet Explorer má chybu, která zabraňuje odeslání formuláře, pokud obsahuje pouze jedno textové pole a jedno odesílací tlačítko.
Nicméně výše uvedené řešení spolehlivě funguje a doporučuju ho všem webmasterům :)
Řešení publikoval na svém blogu Marek Vidtman ve článku Odeslání formuláře klávesou Enter, za což mu patří velký dík.