Форма отправлена дважды с использованием 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, но не получаю ли форму, отправленную дважды?

Ответы на вопрос(4)

Ваш ответ на вопрос