Limpar formulário após submit

Fala gnt!

Não estou conseguindo limpar um formulário depois dele ser enviado.
Já tentei colocar um evento submit no form e limpar todos os campos. Mas os campos são zerados antes de enviar.

$("form#user-form).submit(function(){
	$(":input").val("");
});

Já tentei criar uma função limpar() e colocar no onClick, mas não deu.

function limpar(){
	$(":input").val("");
}

Outra coisa, tenho um projeto com vários formulários e alguns deles limpam os campos normalmente após o envio e outros não. Qual o motivo? É preciso que os campos sejam do mesmo tipo?

E limpar campo a campo, tentou?

Posta o HTML.

Não seria $("input").val("");?

Exemplo: https://jsbin.com/cedezukika/edit?html,js,output

Já tentei também. Mas continua apagando antes de enviar.

$("form#form-incluirPd").submit(function(){
	$("input#produto-nome").val("");
	$("input#produto-preco").val("");
	$("input#produto-custoPc").val("");
	$("input#produto-custoTt").val("");
	$("input#produto-pb").val("");
	$("input#produto.pl").val("");
	$("input#produto.fc").val("");
	$("input#produto.pbPc").val("");
	$("input#produto.plPc").val("");
})

Não vai funcionar pois após submit a página é recarregada.

@javaflex meu caro, a questão não é limpar um campo. E sim limpar todos os campos após o envio do form.

$(" input ") ~> assim seleciona apenas 1 input.

$(" :input ") ~> assim todos são selecionados.

Onde falei em limpar 1 campo??? Rode o exemplo e vai ver que funciona para todos. Só não sei da onde tirou essa ideia que terá resultado em fazer isso no submit. Estude sobre o básico de HTML e HTTP.

Realmente, você está certo, o $(“input”) seleciona todos, porém não é o que eu preciso. Eu preciso zerar os campos depois do submit. Pois tenho um form que envia informações para a mesma página onde ele está, e ao enviar ele não limpa os campos.

Isso não é possível no submit, via ajax seria tranquilo. Via submit você pode fazer uma gambiarra no evento onload do body, tratando a limpeza neste evento. Ou já trazer limpo do servidor. Mas procure fazer via ajax.

Mas aí é questão de organizar a ordem dos acontecimentos…
Posta o código inteiro deste submit aí.

1 curtida
<form class="form-style form-basic" action="${linkTo[ItemdistribuicaoController].adiciona(null)}" method="post" id="form-incluirdt">
	<input type="text" class="form-control" name="itemdistribuicao.dr_ttProduzido" id="itemdistribuicao-dr_ttProduzido" value="${itemdistribuicao.dr_ttProduzido}"/>
	<input type="text" class="form-control" name="itemdistribuicao.dr_ttConsumido" id="itemdistribuicao-dr_ttConsumido" value="${itemdistribuicao.dr_ttConsumido}" />
	<input type="text" class="form-control" name="itemdistribuicao.dr_sobraLimpa" id="itemdistribuicao-dr_sobraLimpa" value="${itemdistribuicao.dr_sobraLimpa}" />
</form>

Consegui resolver da seguinte forma:

Limpei campo por campo e importei na página do form.

$(document).ready(function(){ 
	$("input#itemdistribuicao-dr_ttProduzido").val("");
	$("input#itemdistribuicao-dr_ttConsumido").val("");
	$("input#itemdistribuicao-dr_sobraLimpa").val("");
});