O que há de errado nisso?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
jquery
preventdefault
djreed
fonte
fonte
alert()
no manipulador de envio, ele é chamado? Caso contrário, pode haver um erro no seu script que impede que o manipulador de eventos seja conectado corretamente. Alguma coisa no console de erros?Respostas:
Tente o seguinte:
fonte
e.preventDefault()
funciona bem com o envio de um formulário, o problema está em outro lugar no código do OP. O usoreturn false
pode resultar em consequências não intencionais.Use a nova sintaxe de evento "on".
Citação: https://api.jquery.com/on/
fonte
$(document).ready()
) Como faço para funcionar?true
oufalse
? Você pode recriar seu código em jsfiddle.net e enviar o link? Tente adicionar umalert()
para confirmar que a função está disparando. Algumas pessoas relataram que a adiçãoe.stopPropagation();
apóse.preventDefault();
interrompe o disparo de outros eventos em cadeia.$('#myFormID').validationEngine('validate')
do jQuery validationEngine como variávelvalid
, para verificar se a entrada é um endereço de email válido. No entanto, quero que ele evite o comportamento padrão de qualquer maneira; nãopreventDefault
tem que estar dentro do bloco if, não antes?preventDefault
está dentro do caso não é válido bloco para parar o envio do formulário. Em outras palavras, se válido , use o comportamento padrão do formulário.Eu acredito que as respostas acima estão todas corretas, mas isso não indica por que o
submit
método não funciona.Bem, o
submit
método não funcionará se o jQuery não puder obter oform
elemento, e o jQuery não fornecerá nenhum erro sobre isso. Se o seu script for colocado no cabeçalho do documento, verifique se o código é executado depois queDOM
estiver pronto . Então,$(document).ready(function () { // your code here // });
vai resolver o problema.A melhor prática é sempre colocar seu script na parte inferior do documento.
fonte
Essa é uma pergunta antiga, mas a resposta aceita aqui não chega à raiz do problema.
Você pode resolver isso de duas maneiras. Primeiro com o jQuery:
Ou sem jQuery:
Você não precisa usar
return false
para resolver esse problema.fonte
fonte
fonte
Seu código está correto, basta colocá-lo dentro da função ready.
fonte
Você também pode tentar esse código, se, por exemplo, tiver adicionado formulários dinâmicos posteriormente. Por exemplo, você carregou uma janela assíncrona com ajax e deseja enviar este formulário.
Caso 1, versão estática: se você tiver apenas alguns ouvintes e o seu formulário a ser manipulado for codificado, poderá ouvir diretamente no "nível do documento". Eu não usaria os ouvintes no nível do documento, mas tentaria ir mais fundo na árvore do doom, pois isso poderia levar a problemas de desempenho (depende do tamanho do seu site e do seu conteúdo)
OU
OU
OU
fonte
.live()
foi descontinuado desde o jQuery 1.7 e removido desde 1.9. Use em.on()
vez disso.Olá, procurei uma solução para fazer um formulário Ajax funcionar com o Google Tag Manager (GTM), o retorno falso impediu a conclusão e o envio da ativação do evento em tempo real na solução google analytics foi alterar o retorno falso por e.preventDefault () ; que funcionou corretamente segue o código:
fonte
O e.preventDefault () funciona bem apenas se você não tiver problemas nos seus javascripts, verifique seus javascripts se o e.preventDefault () não funcionar, as chances de algumas outras partes do seu JS não funcionarem também
fonte
Bem, eu encontrei um problema semelhante. O problema para mim é que o arquivo JS é carregado antes da renderização do DOM. Então mova seu
<script>
para o final da<body>
tag.ou use adiar.
então tenha certeza de que
e.preventDefault()
deve funcionar.fonte