Formulário enviado duas vezes usando submit () no keyup

Eu tinha um código jQuery / HTML semelhante a este:

<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>

O objetivo era enviar automaticamente o formulário quando o usuário pressionou a tecla "Enter". Eu uso regularmente o Firefox, então tudo estava OK para mim até que eu testei no Google Chrome e no Internet Explorer.

Quando eu pressionei a tecla Enter nos navegadores posteriores, às vezes eu recebia o formulário enviado duas vezes. Isso foi fácil de perceber porque eu iria conseguir entradas duplicadas no meu banco de dados e veria doisPOSTs usando o Fiddler.

Depois de alguns testes, descobri que meu problema era o código jQuery, já que a caixa de texto se submetia automaticamente ao entrar sem ele, e usar esse código produziria um segundoPOST em alguns navegadores.

Minhas perguntas são:

Por que os navegadores não previnem de maneira inteligente a segunda postagem do formulário (como o Firefox fez no meu teste)?

Devo esperar esse comportamento em todos os principais navegadores em todas as plataformas?

Existe uma maneira de melhorar este código, então eu executo o envio usando JavaScript, mas não recebo o formulário enviado duas vezes?

questionAnswers(4)

yourAnswerToTheQuestion