Я боролся с этой же проблемой;одна из моих форм отправлялась без проблем при нажатии «ввод» в текстовых полях;другая, похожая, форма на той же странице не будет представлена вообще, для меня.
Ни в одном из полей не было кнопки отправки, и ни одно из них не использовало javascript для какой-либо отправки.
Я обнаружил, что когда в форме есть только одно текстовое поле, нажмите клавишу ввода'в текстовом поле будет автоматически отправлено;но если имеется более одного (обычного (т. е. однострочного) поля ввода) поля, оно ничего не делает, кроме случаев, когда есть также какая-то кнопка «отправить».
По-видимому, это часть Спецификация HTML 2.0 :
Если в форме имеется только одно однострочное поле ввода текста, пользовательский агент должен принять Enter в этом поле как запрос на отправку формы.
Старое, но, по-видимому, все еще актуальное и интересное дальнейшее обсуждение здесь .
... очевидно, означало удобный способ представить простоезапросы, но снижая риск, в сложной форме, преждевременной отправки его при попытке заполнить его. Многочисленные реализации браузера (например, Netscape, Opera, различные версии Lynx, ...) следовали этому совету, хотя, кажется, с небольшимразличные интерпретации.
Я сделал JSFiddle для демонстрации .Насколько я могу судить (лениво только тестирование с Chrome), форма будет отправлена при «Enter», если есть только одно текстовое поле, или если есть кнопка отправки, даже если она скрыта.
(EDIT:Позже я обнаружил, что это также работает, если есть другие поля ввода, которые не являются обычным однострочным текстовым вводом ... например, textareas, select и т. Д. - спасибо @ user3292788 за эту информацию. Обновлен JSFiddleчтобы отразить это).
<h2>Form with one text field only, no submit button</h2>
<p>Seems to submit automatically when pressing 'enter' in the first text field</p>
<form action="" method="post">
<div>
<label for="pt-search-input">Search</label>
<div>
<input name="term" type="text" placeholder="Example: budapest amsterdam" /> <a href="#pt-search-bar">cancel</a></div>
</div>
</form>
<h2>Form with two text fields, no submit button</h2>
<p>Won't submit when pressing 'enter' in the forms ...</p>
<form action="" method="post">
<div>
<label for="pt-search-input">Search</label>
<div>
<input name="term" type="text" placeholder="Example: budapest amsterdam" />
<input name="term2" type="text" placeholder="Example: budapest amsterdam" /> <a href="#pt-search-bar">cancel</a></div>
</div>
</form>
<h2>Form with two text fields and a submit button ...</h2>
<p>Now it submits with 'enter' key</p>
<form action="" method="post">
<div>
<label for="pt-search-input">Search</label>
<div>
<input name="term" type="text" placeholder="Example: budapest amsterdam" />
<input name="term2" type="text" placeholder="Example: budapest amsterdam" /> <a href="#pt-search-bar">cancel</a>
<input type="submit" />
</div>
</div>
</form>
<h2>Form with two text fields and a HIDDEN submit button ...</h2>
<p>Seems to work, even with submit hidden ...</p>
<form action="" method="post">
<div>
<label for="pt-search-input">Search</label>
<div>
<input name="term" type="text" placeholder="Example: budapest amsterdam" />
<input name="term2" type="text" placeholder="Example: budapest amsterdam" /> <a href="#pt-search-bar">cancel</a>
<input type="submit" />
</div>
</div>
</form>
<h2>Form with no action or method attribute, HIDDEN submit button ...</h2>
<p>Even this seems to work.</p>
<form>
<div>
<label for="search-input">Search</label>
<div>
<input name="term" type="text" placeholder="Example: budapest amsterdam" />
<input name="term2" type="text" placeholder="Example: budapest amsterdam" /> <a href="#pt-search-bar">cancel</a>
<input type="submit" />
</div>
</div>
</form>
<h2>Form with multiple fields, but only one text input, no submit button.</h2>
<p>This seems to work as well.</p>
<form action="" method="post">
<p><input type="text" ></p>
<textarea name="" id="" cols="30" rows="10"></textarea>
<p>
<select name="" id="">
<option value="">Value</option>
</select>
</p>
</form>