Implicitní odeslání formuláře nefunguje vždy

Můj přítel Tom a Robin nedávno diskutovali na našich kanálech Slack o implicitním odesílání formulářů. Implicitní odeslání formuláře je akce pouhého stisknutí klávesy ENTER při zaměření vstupního prvku. Ukazuje se, že je to možné pouze za dvou podmínek:

  • formulář má tlačítko pro odeslání
  • formulář má pouze jeden vstupní prvek

Dovolte mi tedy rychle sdílet Tomův příklad.

<form onsubmit="alert(1)">
  <!-- this will alert if you press enter while "foo" is focused -->
  <input name="foo" />
</form>

<form onsubmit="alert(2)">
  <!-- this won't -->
  <input name="foo" />
  <input name="bar" />
</form>

Toto chování můžete obejít přidáním skrytého tlačítka pro odeslání. Ale přesto... toto chování mě překvapilo.

Nevěděl jsem o tom a je to definováno ve spec. Dobré vědět!