atualizado em março de 2012.
Então, dois anos depois de eu ter respondido originalmente a essa pergunta, volto para ver que ela se transformou em uma grande bagunça. Sinto que está na hora de voltar a ele e tornar minha resposta realmente correta, pois é a mais votada e aceita.
Para o registro, a resposta de Titi está errada, pois não é o que o pôster original solicitou - é correto que seja possível redefinir um formulário usando o método reset () nativo, mas essa pergunta está tentando limpar um formulário fora do lembrado valores que permaneceriam no formulário se você o redefinir dessa maneira. É por isso que é necessária uma redefinição "manual". Suponho que a maioria das pessoas acabou nesta pergunta em uma pesquisa no Google e está realmente procurando o método reset (), mas não funciona no caso específico do OP.
Minha resposta original foi esta:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
O que pode funcionar em muitos casos, inclusive no OP, mas, como indicado nos comentários e em outras respostas, limpará os elementos de rádio / caixa de seleção de qualquer atributo de valor.
Uma resposta mais correta (mas não perfeita) é:
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
Usando os :text
, :radio
, etc. seletores por si só é considerado má prática por jQuery como eles acabam avaliando a *:text
que torna demorar muito mais tempo do que deveria. Prefiro a abordagem da lista de desbloqueio e gostaria de tê-la usado na minha resposta original. De qualquer forma, especificando a input
parte do seletor e o cache do elemento do formulário, isso deve torná-lo a resposta com melhor desempenho aqui.
Essa resposta ainda pode ter algumas falhas se o padrão das pessoas para elementos selecionados não for uma opção que tenha um valor em branco, mas certamente é tão genérico quanto possível e isso precisaria ser tratado caso a caso .
not()
se o seu formulário tiver alguma entrada oculta.