Comunidad de diseño web y desarrollo en internet online

Formulario en Tiempo real de suma, checkbox y producto.

Citar            
MensajeEscrito el 10 Oct 2013 09:41 am
Hola, :lol:
Llevo ya un par de horas intentando hacer mi primer formulario de calculo en tiempo real y no hay manera.
La idea es:
3 checkbox (cada checkbox tiene un valor diferente, en este caso 10, 15 y 20 leuros)
3 campos en blanco numericos (cada campo x se mutiplica por un importe diferente, en este caso 30, 35 y 40 leuros)
El total (la suma de los 3 checkbox y los 3 campos)

Aqui os dejo el rompecabezas :|

Código HTML :

<head>
<script type="text/javascript">
function sumar(c){
var subtotal = 0;
campo = c.form;
  if(!/^\d*$/.test(c.value)) return;

      for (var i = 0; i < campo.length-1; i++) {
          if (!/^\d+$/.test(campo[i].value)) continue;
              subtotal += parseInt(campo[i].value);
      }
document.getElementById('res').value = subtotal;
}
function Suma2(isChecked, valor){
    if (isChecked) {
        total = (parseFloat(document.sumar2.total.value) + parseFloat(valor)).toFixed(2);
    } else {
        total = (parseFloat(document.sumar2.total.value) - parseFloat(valor)).toFixed(2);
    }
document.sumar2.total.value = total;
document.sumar2.total2.value =  parseFloat(siniva2).toFixed(2);
}
</script>
</head>

<body style="text-align: right">

<form name="sumar2" method="POST">
<input type="hidden" value="0.00" id="total" name="total" />    
<p style="text-align: left">10 &euro; <input type="checkbox" value="10" id="Prod4" name="Prod4" onClick="Suma2(this.checked,this.value)" /></p>
<p style="text-align: left">15 &euro; <input type="checkbox" value="15" id="Prod5" name="Prod5" onClick="Suma2(this.checked,this.value)" /></p>
<p style="text-align: left">20 &euro; <input type="checkbox" value="20" id="Prod6" name="Prod6" onClick="Suma2(this.checked,this.value)" /></p>
<p style="text-align: left">
30€ x
<input type="text" name="sum[]" value="" onkeyup="sumar(this);" size="3" /><br />
35€ x
<input type="text" name="sum[]" value="" onkeyup="sumar(this);" size="3" /><br />
40€ x
<input type="text" name="sum[]" value="" onkeyup="sumar(this);" size="3" /><br />
</p>
<p style="text-align: left">
<b><font color="#999999">Total</font></b> 
<input type="text" id="res + total12" value="" size="6" /> &euro;
</p>
</form>
</body>



Gracias por las lecturas, + gracias por las respuestas y adoracion para la solucion. Me voy a dormir que estoy cansadete :zzz:

Por alphasky

32 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Oct 2013 02:55 pm
Tchiale es lo que no me gusta dle javascript puro si eseta muy enredado... en fin


Necesitas el evento "on Change", y que cada vez que se cambie cualquier input (excepto el resultado), se haga la sumatoria y se llene el input del total.

LA verdad si me da algo de flojerita corregirle pero vamos a ver si me sale.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 11 Oct 2013 04:46 pm
:) Gracias por tu respuesta, pero la idea es que el resultado se actualizase mientras se escribe, no cuando cambias de box, por eso lo del onkeyup.
Bueno, después de mas de 5 horas buscando y probando :| ya casi lo tengo terminado. Aunque hay un fallo que supongo que alguno de vosotros me podreis solventar. Las checkbox al desmarcarlas no se les hace la resta sigue sumando y sumando :?
Que solución hay?
Aqui os dejo el codigo limpio y comprensible :oops:

Código HTML :

<html>
<head>
<title>Formulario en Tiempo real de suma, checkbox y producto.</title>
<script>

function calculo(cantidad,precio,inputtext,totaltext){
   
   /* Parametros:
   cantidad - entero con la cantidad
   precio - entero con el precio
   inputtotal - nombre del elemento del formulario donde ira el total
   */
   
   // Calculo del subtotal
   subtotal = precio*cantidad;
   inputtext.value=subtotal;
   
   //Actualizar el total
   // Utilizamos el eval. Ya que el valor es un texto y si lo tratamos como tal
   // es como si estuviesemos manipulando una cadena.
   total = eval(totaltext.value);
   totaltext.value = total + subtotal;
}
</script>
<body>

<h1>Formulario en Tiempo real de suma, checkbox y producto.</h1>

<form>
<table>
<tr>
<td>1</td>
<td><input type="text" size="3" id="1" value="" onkeyup="calculo(this.value,precio1.value,total1,total);">x</td>
<td><input type="hidden" id="precio1" value="30"/>30€</td>
<td><input type="hidden" size="8" id="total1" value="0"></td>
</tr>
<tr>
<td>2</td>
<td><input type="text" size="3" id="2" value="" onkeyup="calculo(this.value,precio2.value,total2,total);">x</td>
<td><input type="hidden" id="precio2" value="35"/>35€</td>
<td><input type="hidden" size="8" id="total2" value="0"></td>
</tr>
<tr>
<td>3</td>
<td><input type="text" size="3" id="3" value="" onkeyup="calculo(this.value,precio3.value,total3,total);">x</td>
<td><input type="hidden" id="precio3" value="40"/>40€</td>
<td><input type="hidden" size="8" id="total3" value="0"></td>
</tr>
<td>4</td>
<td><input type="checkbox" size="3" id="4" value="10" onClick="calculo(this.value,precio4.value,total4,total);">x</td>
<td><input type="hidden" id="precio4" value="1"/> 10€</td>
<td><input type="hidden" size="8" id="total4" value="0"></td>
</tr>
<tr>
<td>5</td>
<td><input type="checkbox" size="3" id="5" value="15" onClick="calculo(this.value,precio5.value,total5,total);">x</td>
<td><input type="hidden" id="precio5" value="1"/>15€</td>
<td><input type="hidden" size="8" id="total5" value="0"></td>
</tr>
<tr>
<td>6</td>
<td><input type="checkbox" size="3" id="6" value="20" onClick="calculo(this.value,precio6.value,total6,total);">x</td>
<td><input type="hidden" id="precio6" value="1"/>20€</td>
<td><input type="hidden" size="8" id="total6" value="0"></td>
</tr>
<tr>
<td></td>
<td>€ Total</td>
<td><input type="text" id="total" size="1" value="0"></td>
</td>
</tr>
</form>
</body>
</html>

Por alphasky

32 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Oct 2013 03:46 pm
tendria s que llamar un nuevo metodo que comparte el atributo "cheked"

algo como

Código Javascript :

<script type="text/javascript">
    function validate() {
        if (document.getElementById('cantidad').checked) {
            // sumarlo
        } else {
            // restarlo
        }
    }
    </script>

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.