Tenho um problema ao usar os botões dentro do formulário. Quero que esse botão chame a função. Sim, mas com resultado indesejado que atualiza a página.
Meu código simples é assim
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
Ao clicar no botão, a função é chamada com a página atualizada, que redefine toda a minha solicitação anterior que afeta a página atual que foi o resultado da solicitação anterior.
O que devo fazer para impedir a atualização da página?
javascript
html
bunkdeath
fonte
fonte
Respostas:
Vamos
getData()
retornar falso. Isso vai consertar.fonte
onclick
função tem que retornar false, nãogetData
.type="button"
é realmente o problema.Adicione
type="button"
ao botãoO valor padrão de
type
para um botão ésubmit
, que publica automaticamente o formulário no seu caso e faz com que pareça uma atualização.fonte
return false;
ao onclick:onclick="getData(); return false;"
Tudo o que você precisa fazer é colocar uma tag de tipo e pressionar o botão de tipo.
Isso resolve o problema
fonte
O problema é que ele aciona o envio do formulário. Se você criar a
getData
funçãoreturn false
, ela deverá interromper o envio do formulário.Como alternativa, você também pode usar o
preventDefault
método do objeto de evento:fonte
HTML
jQuery
fonte
em vez de usar a tag de botão, use a tag de entrada. Como isso,
fonte
button type='button'
Se o seu botão for "botão" padrão, certifique-se de definir explicitamente o atributo type, caso contrário, o formulário da Web o tratará como envio por padrão.
se você usar js faça assim
fonte
Um método javascript para desativar o próprio botão
Depois que todos os campos do formulário atenderem aos seus critérios, você poderá reativar o botão
Usar um Jquery será algo como isto
fonte
Por qualquer motivo no Firefox, embora eu tenha
return false;
emyform.preventDefault();
na função, ele atualiza a página após a execução da função. E não sei se essa é uma boa prática, mas funciona para mim, insirojavascript:this.preventDefault();
no atributo action.Como eu disse, tentei todas as outras sugestões e elas funcionam bem em todos os navegadores, mas o Firefox, se você tiver o mesmo problema, tente adicionar o evento prevent no atributo action
javascript:return false;
oujavascript:this.preventDefault();
. Não tente comjavascript:void(0);
que irá quebrar o seu código. Não me pergunte por que :-).Não acho que seja uma maneira elegante de fazê-lo, mas no meu caso não tive outra escolha.
Atualizar:
Se você recebeu um erro ... depois que o ajax é processado, remova a ação do atributo e, no
onsubmit
atributo, execute sua função seguida pelo retorno falso:onsubmit="functionToRun(); return false;"
Não sei por que todo esse problema com o Firefox, mas espero que funcione.
fonte
A função Return não está funcionando em todos os casos. Eu tentei isso:
Não funcionou para mim.
Eu tentei retornar false dentro da função e funcionou para mim.
fonte
Eu estava enfrentando o mesmo problema. O problema está com a
onclick
função Não deve haver nenhum problema com a funçãogetData
. Funcionou fazendo com que aonclick
função retornasse falsa.fonte
Esta é a melhor solução:
Nota: Meu código é muito simples.
fonte
Você pode usar ajax e jquery para resolver esse problema:
fonte