Por que todos os formulários são enviados quando apenas um botão de envio do formulário é clicado?

Erik

Tenho dois formulários que vão para lugares diferentes / servem a propósitos diferentes, mas coexistem em uma janela pop-up. Apenas um deve ser usado por vez. O botão do primeiro formulário envia apenas a si mesmo (corretamente), mas o botão do segundo formulário envia os dois:

form.html

<div>
    <form id="form1" action="/onePlace" method="post">
      <button type="submit">Submit</button>
      <!-- Submits form1 -->
    </form>

    <form id="form2" action="/anotherPlace" method="post">
      <button type="submit">Submit</button>
      <!-- Submits form1 and form2 -->
    </form>
</div>

carregado em outra página

<div id="loadedForm"></div>
<script type="text/javascript">

    // Event fires to reveal in modular dialogue
    function(){
        $('#loadedForm').load('/form'); // Server serves form.html
        $("#promptLoginSignup").lightbox_me({
            centered: true,
            onLoad: function () {
                $(function() {
                    $('#form1').submit(function(event) {
                        event.preventDefault();
                        console.log('form1 submitted'); // Fires on both button presses
                    });
                    $('#form2').submit(function(event) {
                        event.preventDefault();
                        console.log('form2 submitted'); // Fires only on second button press
                    });
                });
            }
        });
    }
</script>

Por que isso acontece e como posso evitá-lo?

Editar : representa com mais precisão meu código real e descreve a configuração com mais detalhes.

Edit 2 Esclarecimento : Este problema existe em um servidor web e utiliza recursos desse servidor. Não pode ser reproduzido em um fragmento ou caneta. Simplesmente apontar o fato de que não é reproduzível na página não ajuda; obviamente, isso não é algo que realmente pode ser feito em uma única página e não poderia ser submetido ao mesmo escrutínio de amostras de código "completas". Estou dando a você o máximo possível e apenas pedindo qualquer percepção que possa ser fornecida por aqueles que podem ter alguns e não aqueles que não têm.

Łukasz Kupiński

O erro não é reproduzido, mas uma coisa que você pode verificar é se o segundo recipiente do botão de envio substitui o primeiro, para evitar o envio de ambos, tente adicionar event.stopPropagation();

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados