Uma maneira de interromper o envio de formulários é retornar falso da sua função JavaScript.
Quando o botão Enviar é clicado, uma função de validação é chamada. Eu tenho um caso na validação de formulário. Se essa condição for atendida, chamo uma função chamada returnToPreviousPage ();
function returnToPreviousPage() {
window.history.back();
}
Estou usando JavaScript e Dojo Toolkit .
Em vez de voltar à página anterior, ela envia o formulário. Como posso cancelar este envio e retornar à página anterior?
javascript
html
forms
Muhammad Imran Tariq
fonte
fonte
Respostas:
Você pode usar o valor de retorno da função para impedir o envio do formulário
e funcionar como
No caso do Chrome 27.0.1453.116 m, se o código acima não funcionar, defina o campo returnValue do parâmetro do manipulador de eventos como false para fazê-lo funcionar.
Obrigado Sam por compartilhar informações.
EDIT:
Agradecemos a Vikram por sua solução alternativa para se validateMyForm () retorna false:
onde validateMyForm () é uma função que retorna false se a validação falhar. O ponto principal é usar o evento name. Não podemos usar para egepreventDefault ()
fonte
false
não parece ter nenhum efeito; O Chrome ainda envia o formulário. Por exemploonsubmit="return false;"
,. No entanto, definir oreturnValue
campo do parâmetro do manipulador de eventos comofalse
funciona para mim.validateMyForm()
tiver errosreturn false
não serão alcançados. Então, isso pode falhar. Depois de muitas horas, encontrei uma solução que funcionava e a publiquei abaixo.Use evitar padrão
Dojo Toolkit
jQuery
JavaScript de baunilha
fonte
target
.A seguir, funciona a partir de agora (testado no Chrome e Firefox):
Onde validateMyForm () é uma função que retorna
false
se a validação falhar. O ponto principal é usar o nomeevent
. Não podemos usar para, por exemploe.preventDefault()
.fonte
Basta usar um
button
botão simples em vez de enviar. E chame uma função JavaScript para lidar com o envio de formulários:Função dentro de uma
script
tag:Você também pode tentar
window.history.forward(-1);
fonte
required
não funcionarão.Muitas maneiras difíceis de fazer uma coisa fácil:
fonte
Todas as suas respostas deram algo para trabalhar.
Por fim, funcionou para mim: (se você não escolher pelo menos um item da caixa de seleção, ele avisa e permanece na mesma página)
fonte
Com base na resposta do @Vikram Pudi, também podemos fazer isso com Javascript puro
fonte
Eu recomendaria não usar
onsubmit
e, em vez disso, anexar um evento no script.Em seguida, use
preventDefault()
(oureturnValue = false
para navegadores mais antigos).fonte
onsubmit
?JS
vez deHTML
usar atributos. Dessa forma, você não precisa de saltar para trás e para frente, tanto durante a leitura de código de outra pessoaDigamos que você tenha um formulário semelhante a este
Aqui está o javascript para a função confirmAction
Este funciona no Firefox, Chrome, Internet Explorer (edge), Safari, etc.
Se não for esse o caso, avise-me
fonte
preventDefault()
ereturnToPreviousPage()
é perfeita e elegante. Ele interrompe a operação normal, assim como você projetaria qualquer coletor de exceção para funcionar. +1.As respostas de Hemant e Vikram não funcionaram totalmente para mim no Chrome. O event.preventDefault (); O script impediu o envio da página, independentemente de ser aprovado ou reprovado na validação. Em vez disso, tive que mover o event.preventDefault (); na instrução if da seguinte maneira:
Agradeço a Hemant e Vikram por me colocarem no caminho certo.
fonte
Por exemplo, se você tiver o botão enviar no formulário, para interromper sua propagação, basta escrever event.preventDefault (); na função chamada ao clicar no botão Enviar ou no botão Enter.
fonte
Basta fazê-lo ....
e aqui vai o seu JQuery
fonte