Создание ключа ввода в HTML-форме отправить вместо кнопки активации
у меня есть HTML-форма с одним submit вход, но и различные button элементы. Когда пользователь нажимает клавишу "enter", я ожидаю, что он действительно отправит форму, но вместо этого (по крайней мере, в 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>
7 ответов:
вы можете использовать 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; } }); });
вам не нужно JavaScript, чтобы выбрать кнопку отправки по умолчанию или ввода. Вам просто нужно отметить его с
type="submit", а остальные кнопки помечают ихtype="button". В вашем примере:<button type="button" onclick="return myFunc1()">Button 1</button> <input type="submit" name="go" value="Submit"/>
попробуйте это, если клавиша enter была нажата, вы можете захватить ее так, например, я разработал ответ на днях 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доbuttonа у меня было плохо написано/>тег Терминатор:так у меня было:
<button name="submit_login" type="submit" class="login" />Login</button>и только что исправили его:
<button name="submit_login" type="submit" class="login">Login</button>теперь работает как шарм, всегда раздражающих мелочей... ХТ
учитывая, что есть только одна (или с этим решением потенциально даже не одна) кнопка отправки, вот решение на основе 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.
Как упоминалось выше-убедитесь, что вы отметили с типом = "кнопка", "Сброс", "отправить" и т.д., Чтобы убедиться, что он правильно каскадирует и выбирает правильную кнопку.
возможно также установка всех из них, чтобы иметь ту же форму (т. е. все, как это работало для меня)
$("form#submit input").on('keypress',function(event) { event.preventDefault(); if (event.which === 13) { $('button.submit').trigger('click'); } });
Comments