Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafwell

Como obter o value de elementos com mesmo name

Recommended Posts

Olá!

 

Estou precisando obter o valor de vários inputs de um determinado form e soma-los para mostrar em um totalizador mais tarde.

 

Exemplo

 

<input name="somar[]" value='1' />

<input name="somar[]" value='2' />

 

Aqui eu quero invocar o Jquery de forma que ele obtenha todos os inputs que tiver name somar[], de forma que eu possa somar os valores e obter o total de '3', nesse caso.

 

Se eu utilizar $('input[name="somar[]"]').val() o Jquery me retorna o primeiro elemento.

 

Há como fazer o que eu quero em Jquery?

 

Agradeço muito pela atenção.

 

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc precisa fazer um loop por todos os objetos retornados, e somar eles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde William,

 

Sim, eu sei que precisarei de um loop para somá-los, mas qual função do Jquery eu usuario para retornar os dados?

 

Pois, veja, se eu usar $('input[name="somar[]"]').val() o Jquery me retorna o primeiro elemento.

 

Como eu faria pra que me retornasse um array, por exemplo?

 

retorno[0] = 1, retorno[1] = 2;

 

Assim eu faria um for para somar tudo, mas preciso saber como trazer todos os elementos.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada:

var c = 0;
$('input[name="somar[]"]').each(function(){
    c += $(this).val();
});
alert( c );

entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi... fiz o teste, mas no meu caso não funcionou.

 

Estou registrando formas de pagamento no meu sistema. A cada forma que eu adiciono, meu javascript cria os botões com name=somar[]. Esse botões não foram carregados com a página, então o evento each não fica sobre ele. Tentei usar como eu faço com o evento click:

 

$('body').on('each', 'input[name="somar[]"]', function(){

//código aqui nunca é executado.

 

})

 

Alguma ideia? Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não não...

 

nesse caso, vc tem q somar em uma variavel global a cada clique deles, e não tudo de uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

William,

 

Consegui fazer o que eu precisava, graças a um post no seu blog! hahahaha! (obrigado por clarear minha visão :joia: )

 

Fiz uma simples função em javascript:

function SomaCamposByName(name){
	valor_array = document.getElementsByName(name);
		var soma = 0;
		for(var i = 0; i < valor_array.length; i++){
			soma += Number(valor_array[i].value); 
		}  
		return soma;
}

 

Depois, a cada vez que eu adiciono/excluo uma forma de pagamento eu chamo novamente a função e ela obtem todos os objetos com o name que eu passei e retorna a soma pra mim. Assim, se eu excluir um item, não preciso fazer uma função que verifica o total e subtrai o valor do item, simplesmente somo tudo novamente.

 

Obrigado pela força! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.