Ir para conteúdo

POWERED BY:

Arquivado

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

rd111072

Calculo automatica sem botão

Recommended Posts

Bom dia!

 

seguinte:

 

tenho que desenvolver um sistema de calculo de custos com varios campos txt que somam ou subtraem de um valor inicial x.

No final haverá um campo Total com o resultado, que preciso que se atualize automaticamente conforme o usuário modifique os valores dos outros campos.

 

Peguei aqui no fórum esse scritpt que funciona legal, mas é com checkbox e precisa clicar no botão "Calcular" pra aparecer o resultado final:

 

<html>
<head>
<title></title>
<script type="text/javascript">
function somar() {
var objCheckBox = document.forms["form1"].elements["checkbox1"];
var iLoop;
//Pegando a parte antes da vírgula:
var subTotal1 = 0;
var RegExp1 = /^[\d][\d]+/g;
//Pegando a parte depois da vírgula:
var subTotal2 = 0;
var RegExp2 = /[\d]+[\d]$/g;

	for (iLoop = 0; iLoop < objCheckBox.length; iLoop++) {
		if (objCheckBox[iLoop].checked == true) {
			//Verificando se existe vírgula no valor retornado:
			if(objCheckBox[iLoop].value.indexOf(",",0) != -1) {
				 //Se houver, somar as partes antes e depois da vírgula, com o uso de ER:
				subTotal1 += parseFloat(objCheckBox[iLoop].value.match(RegExp1));
				subTotal2 += parseFloat(objCheckBox[iLoop].value.match(RegExp2));
				//Posteriormente faremos o cálculo final dessa soma, 
				//pois a segunda parte poderá ser maior que 100;
			} else {
				//Se não houver, somar todo o valor a subTotal1:
				subTotal1 += objCheckBox[iLoop].value;
			}
		}
	}
	
//Calculando o valor final:
	if(subTotal2 == 100) {
		subTotal1 += 1;
		subTotal2 = "00";
	} else if (subTotal2 > 100) {
		var resultado = Math.floor(subTotal2/100);
		subTotal1 += resultado;
		var resto = subTotal2-(100*resultado);
		subTotal2 = resto;
	}
document.form1.subtotal.value = subTotal1+ ","+subTotal2;
var preDet = parseFloat(document.form1.predet.value.match(RegExp1)+"."+document.form1.predet.value.match(RegExp2));
var Total = parseFloat(subTotal1+"."+subTotal2)-preDet;
Total = Total.toFixed(2);
Total = ""+Total;
Total = Total.replace(".",",");
document.form1.total.value = Total;
}
</script>
</head>
<body>

<form name="form1" method="post">
<input type="checkbox" name="checkbox1" value="2354,56"> 2354,56
<br><input type="checkbox" name="checkbox1" value="1350,11"> 1350,11
<br><input type="checkbox" name="checkbox1" value="5378,85"> 5378,85
<br><input type="checkbox" name="checkbox1" value="4477,15"> 4477,15
<br><input type="checkbox" name="checkbox1" value="7548,47"> 7548,47
<br>Sub-total: <input type="text" name="subtotal" value="">
<br>Valor pré-determinado: <input type="text" name="predet" value="3000,00">
<br><br>Total: <input type="text" name="total">

<br><br>
<input type="button" value=" Calcular " onClick="somar()">
</form>

</body>
</html>

Alguém sabe? Preciso muito disso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera o onclick, para onchange ou onblur de um dos campos.

E os check, basta você fazer virar inputs mesmo.

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.