У меня есть HTML-форма с одним submit
входом, но также с различными button
элементами. Когда пользователь нажимает клавишу ввода, я ожидал, что он действительно отправит форму, но вместо этого (по крайней мере, в Chrome 15) я обнаружил, что он запускает первый button
(поскольку это происходит раньше в HTML, чем submit
ввод , Похоже).
Я знаю, что в целом вы не можете заставить браузеры отдавать предпочтение конкретному submit
вводу, но я действительно думал, что они предпочтут ввод submit
над button
элементами. Есть ли небольшая настройка, которую я могу внести в HTML, чтобы заставить эту работу работать, или мне придется использовать какой-то подход Javascript?
Вот примерный макет HTML:
<form action="form.php" method="POST">
<input type="text" name="field1"/>
<button onclick="return myFunc1()">Button 1</button>
<input type="submit" name="go" value="Submit"/>
</form>
Ответы:
Вам не нужен JavaScript для выбора кнопки отправки или ввода по умолчанию. Вам просто нужно пометить его
type="submit"
, а остальные кнопки пометить ихtype="button"
. В вашем примере:<button type="button" onclick="return myFunc1()">Button 1</button> <input type="submit" name="go" value="Submit"/>
источник
type="button"
заключается в том, что по умолчанию элементы кнопкиtype="submit"
. Таким образом, предпосылка вопроса о том, что была только одна кнопка отправки, на самом деле неверна.Вы можете использовать jQuery:
$(function() { $("form input").keypress(function (e) { if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { $('button[type=submit] .default').click(); return false; } else { return true; } }); });
источник
button[type=submit]
однако при условии, что вы пометили кнопку отправки по умолчанию с помощьюdefault
класса css.Попробуйте это, если была нажата клавиша ввода, вы можете захватить это, например, так, например, я разработал ответ, на днях html-кнопка укажите выбрана , посмотрите, поможет ли это.
Укажите имя формы, например,
yourFormName
тогда вы сможете отправить форму, не обращая внимания на форму.document.onkeypress = keyPress; function keyPress(e){ var x = e || window.event; var key = (x.keyCode || x.which); if(key == 13 || key == 3){ // myFunc1(); document.yourFormName.submit(); } }
источник
Я просто столкнулся с проблемой с этим. Моя была неудачной из-за смены на
input
a,button
и у меня был плохо написанный/>
терминатор тега:Итак, у меня было:
<button name="submit_login" type="submit" class="login" />Login</button>
И только что внесли в него поправки:
<button name="submit_login" type="submit" class="login">Login</button>
Теперь работает как шарм, всегда раздражающие мелочи ... HTH
источник
$("form#submit input").on('keypress',function(event) { event.preventDefault(); if (event.which === 13) { $('button.submit').trigger('click'); } });
источник
Учитывая, что есть только одна (или с этим решением, возможно, даже не одна) кнопка отправки, вот решение на основе jQuery, которое будет работать для нескольких форм на одной странице ...
<script type="text/javascript"> $(document).ready(function () { var makeAllFormSubmitOnEnter = function () { $('form input, form select').live('keypress', function (e) { if (e.which && e.which == 13) { $(this).parents('form').submit(); return false; } else { return true; } }); }; makeAllFormSubmitOnEnter(); }); </script>
источник
Я просто попробовал это как в Chrome, так и в Firefox и IE10.
Как упоминалось выше - убедитесь, что вы отметили type = "button", "reset", "submit" и т. Д., Чтобы убедиться, что он правильно каскадируется и выбирает правильную кнопку.
Возможно также, чтобы все они имели одинаковую форму (т.е. все, что работало для меня)
источник