Форма отправлена дважды с использованием submit () при включении
У меня был код jQuery / HTML, похожий на этот:
<code><form action="/SomeAction" method="post"> <input id="my-textbox" type="text" placeholder="Write something and press enter to continue..." /> </form> <script type="text/javascript"> $(function() { $('#my-textbox').keyup(function(e) { var $textbox = $(this); if ($textbox.val().length > 0 && e.keyCode == 13) { $textbox.parent('form').submit(); } }); }); </script> </code>
Цель состояла в том, чтобы автоматически отправить форму, когда пользователь нажал кнопку & quot; Enter & quot; ключ. Я регулярно использую Firefox, так что все было в порядке, пока я не проверил в Google Chrome и Internet Explorer.
Когда я нажимал клавишу Enter в более поздних браузерах, иногда я получал форму, отправленную дважды. Это было легко заметить, потому что я получал дубликаты записей в моей БД, и я видел дваPOST
с помощью Fiddler.
После некоторого тестирования я обнаружил, что моей проблемой был код jQuery, так как текстовое поле будет автоматически отправляться при вводе без него, и использование этого кода даст вторуюPOST
в некоторых браузерах.
My questions are:
Почему браузеры не могут предотвратить публикацию второй формы (как это сделал Firefox в моем тестировании)?
Стоит ли ожидать такого поведения во всех основных браузерах на всех платформах?
Есть ли способ улучшить этот код, чтобы я выполнял отправку с использованием JavaScript, но не получаю ли форму, отправленную дважды?