Pergunta

Estou tendo um problema em enviar um formulário e confirmação de JavaScript. Basicamente, o seguinte JavaScript é chamado quando o botão "Enviar" é pressionado.

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        window.location = "#editform2";
    }
}

No entanto, quando bati no cancelamento em vez de OK, o JavaScript é executado corretamente, porque assisto à barra de endereços e não atualiza para #EditForm2. O formulário, no entanto, ainda envia. Parece atualizar a página. Aqui estão as partes relevantes do formulário:

//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">

Portanto, o formulário não sabe para onde está indo, apenas atualiza a página e a página também é o processador. Portanto, está processando, apesar de ter clicado em cancelamento e o JavaScript deve mantê -lo na mesma página. Além de mudar o processamento para uma página diferente, quais são minhas soluções?

Foi útil?

Solução

Funciona assim porque é um botão Sumbit e o formulário é enviado em todos os casos. Atribua um ID ao formulário e altere o tipo de entrada:

<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">

e chame essa função no clique:

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        document.getElementById("formid").submit();
    }
}

Outras dicas

Não use o evento OnClick do botão Enviar, use o evento Onsubmit do seu formulário:

document.forms[0].onsubmit = function () {
    return confirm("Are you sure you wish to edit?");
}

Você pode adicionar um atributo de identificação ao seu formulário para identificá -lo.

Manter a ligação do evento no código JavaScript; Não em atributos embutidos no seu HTML, torna seu código mais mantido e fácil de depurar.

tentar:

return answer;

No final da função e verifique se o método onclick retorna isso. Igual a:

<input type="submit" value="Edit" onclick="return confirmation()">

Isso tornaria a função retornar falsa e ter o formulário não ser publicado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top