Consulta sobre código fuente implementado en JavaScript para mostrar datos

Hola experto.
Me gustaría me ayudaras con lo siguiente..
Hice un form en donde se calculan valores automáticamente con javascript
Se deben ingresar los valores "Mi", "A" y "B"
Los valores que calcula son "campo 4" (suma Mi y A), y "Ri", que es (Mi+A)/B
LO QUE ME GUSTARÍA HICIERA.. Es que al ingresar "Mi" y "A", me de inmediatamente "campo4"... Sin tener que esperar a ingresar el valor "B"..
¿Se puede?
Este es todo el html..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Ejemplo</title>
<script>
   function Sumar(Campo1, Campo2, campMi, Campo3 , valor4)
   {
    var objCamp1=document.getElementById(Campo1);
    var objCamp2=document.getElementById(Campo2);
    var objCampMi=document.getElementById(campMi);
    var objCamp3=document.getElementById(Campo3);
    var objval4=document.getElementById(valor4);
        //Supongamos qe si o si existen los campos... :P
    if ((objCamp1.value!='') && (objCamp2.value!='') && (objCampMi.value!=''))
    {
        objCamp3.value=(parseInt(objCamp1.value) + parseInt(objCamp2.value)) / parseInt(objCampMi.value);
        objval4.value=parseInt(objCamp1.value) + parseInt(objCamp2.value);
    }
   }
  </script>
<script>
  function Sumar2(CampoA, CampoB, valor5)
   {
    var objCampA=document.getElementById(CampoA);
    var objCampB=document.getElementById(CampoB);
    var objval5=document.getElementById(valor5);
        //Supongamos qe si o si existen los campos... :P
    if ((objCampA.value!='') && (objCampB.value!=''))
    {
        objval5.value=parseInt(objCampA.value) + parseInt(objCampB.value);
    }
   }
  </script>
</head>
<body>
<form>
<div align="center">( Mi
      <input name="mi" type="text" id="Sumar1" onchange="Sumar('Sumar1','Sumar2','Sumar3','Resultado','summa');">
      + A
      <input name="a" type="text" id="Sumar2" onchange="Sumar('Sumar1','Sumar2','Sumar3','Resultado','summa');">
    ) ---->
    <input name="eee" type="text" id="summa" onchange="Sumar2('Sumar1','Sumar2','summa');" readonly>
    campo 4
    <label></label>
<br />
    -------------------------------------<br>
    B
    <input name="b" type="text" id="Sumar3" onchange="Sumar('Sumar1','Sumar2','Sumar3','Resultado','summa');">
    <br>
    </div>
<div align="center">Ri
      <input type="text" id="Resultado" onchange="Sumar('Sumar1','Sumar2','Sumar3','Resultado','summa');" readonly>
      <br />
      <br>
    </div>
</form>
</body>
</html>
Gracias de anemano por la ayuda
Respuesta
1
No se exactamente cual es tu pregunta. Si lo que quieres es que siempre puedas hacer la operación, mete unos valores por defecto en los campos de texto. Si lo que quieres es que se ejecute la operación sin necesidad de pulsar ningún botón, sino que se haga al cambiar los valores de los campos, lo que puedes hacer es disparar la función de cálculo en el evento onChange() de las cajas de texto, que se dispara al salir de la caja de texto. También puedes usar el evento onKeyPress(), que es mucho más dinámico. Cuidado con esto, porque tendrás que controlar posibles valores no válidos.
hola.. gracias por responderme.
Y si, lo que quiero es que desde un inicio los campos de texto tengan un valor por defecto.. por ejemplo "0", ¿cómo se hace eso?.. soy novato.
Gracias nuevamente
Pues no tienes más que dar un valor a la propiedad "value" de las cajas de texto. Por ejemplo:
<input type="text" name="a" value="0"></input>
Hola carlos..
Gracias nuevamente.
Si, de hecho así lo hice finalmente.. lo que me gustaría saber, era si se puede dar un valor EN javascript, en vez del código del form, la idea era simplemente que no saliera el valor en el "text"... solo un detalle de diseño..
Saludos
David.-
Ok. Entonces, lo que puedes hacer es lo siguiente. Te pongo un ejemplo para la función Sumar, para uno de los valores que usas:
    var val1 = objCamp1.value;
    if (!val1 || val1==''){
        val1 = "0";  //...o el valor que le quieras dar por defecto
    }
    val1 = parseInt(val1);
Después, en el resto del código, usa val1 en vez de objCamp1.value, sabiendo que va a tener un valor válido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas