Foros del Web » Programando para Internet » Javascript »

Aparezca valor automaticamente una vez llenados los campos correspondientes

Estas en el tema de Aparezca valor automaticamente una vez llenados los campos correspondientes en el foro de Javascript en Foros del Web. Me gustaría saber como hacer para que el calculo que hago me salga automaticamente una vez llenado el campo que me corresponda. LO que hago ...
  #1 (permalink)  
Antiguo 17/02/2008, 10:44
 
Fecha de Ingreso: enero-2008
Mensajes: 15
Antigüedad: 16 años, 3 meses
Puntos: 0
Aparezca valor automaticamente una vez llenados los campos correspondientes

Me gustaría saber como hacer para que el calculo que hago me salga
automaticamente una vez llenado el campo que me corresponda.
LO que hago yo es que en el campo fechinicio coloco la fecha de inicio y en fechtermino una fecha de termino. y en el campo diascometido me deberia salir la diferencia de dias....

El calculo me sale perfectamente pero debo hacer un click en el campo diascometido para que me salga el resultado estoy usando un Onblur alguien me podría decir una forma que me salga el valor automaticamente sería de gran ayuda, es solamente eso.

LO mismo para los campos suma,viaticoparcial,viaticototal,a,b,c,d


Algun evento en la que me salga automaticamente esos valores, lo digo por que estos ultimos campos estarán ocultos

Gracias de antemano

Código:
function cerosIzq(sVal, nPos){
    var sRes = sVal;
    for (var i = sVal.length; i < nPos; i++)
     sRes = "0" + sRes;
    return sRes;
   }

   function armaFecha(nDia, nMes, nAno){
    var sRes = cerosIzq(String(nDia), 2);
    sRes = sRes + "/" + cerosIzq(String(nMes), 2);
    sRes = sRes + "/" + cerosIzq(String(nAno), 4);
    return sRes;
   }

   function sumaMes(nDia, nMes, nAno, nSum){
    if (nSum >= 0){
     for (var i = 0; i < Math.abs(nSum); i++){
      if (nMes == 12){
       nMes = 1;
       nAno += 1;
      } else nMes += 1;
     }
    } else {
     for (var i = 0; i < Math.abs(nSum); i++){
      if (nMes == 1){
       nMes = 12;
       nAno -= 1;
      } else nMes -= 1;
     }
    }
    return armaFecha(nDia, nMes, nAno);
   }

   function esBisiesto(nAno){
    var bRes = true;
    res = bRes && (nAno % 4 == 0);
    res = bRes && (nAno % 100 != 0);
    res = bRes || (nAno % 400 == 0);
    return bRes;
   }

   function finMes(nMes, nAno){
    var nRes = 0;
    switch (nMes){
     case 1: nRes = 31; break;
     case 2: nRes = 28; break;
     case 3: nRes = 31; break;
     case 4: nRes = 30; break;
     case 5: nRes = 31; break;
     case 6: nRes = 30; break;
     case 7: nRes = 31; break;
     case 8: nRes = 31; break;
     case 9: nRes = 30; break;
     case 10: nRes = 31; break;
     case 11: nRes = 30; break;
     case 12: nRes = 31; break;
    }
    return nRes + (((nMes == 2) && esBisiesto(nAno))? 1: 0);
   }

   function diasDelAno(nAno){
    var nRes = 365;
    if (esBisiesto(nAno)) nRes++;
    return nRes;
   }

   function anosEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
    var nRes = Math.max(0, nAn1 - nAn0 - 1);
    if (nAn1 != nAn0)
     if ((nMe1 > nMe0) || ((nMe1 == nMe0) && (nDi1 >= nDi0)))
      nRes++;
    return nRes;
   }

   function mesesEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
    var nRes;
    if ((nMe1 < nMe0) || ((nMe1 == nMe0) && (nDi1 < nDi0))) nMe1 += 12;
    nRes = Math.max(0, nMe1 - nMe0 - 1);
    if ((nDi1 > nDi0) && (nMe1 != nMe0)) nRes++;
    return nRes;
   }

   function diasEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
    var nRes;
    if (nDi1 < nDi0) nDi1 += finMes(nMe0, nAn0);
    nRes = Math.max(0, nDi1 - nDi0);
    return nRes;
   }

   function mayorOIgual(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
    var bRes = false;
    bRes = bRes || (nAn1 > nAn0);
    bRes = bRes || ((nAn1 == nAn0) && (nMe1 > nMe0));
    bRes = bRes || ((nAn1 == nAn0) && (nMe1 == nMe0) && (nDi1 >= nDi0));
    return bRes;
   }

   function calcula(){
    var sFc0 = document.ssc.fechinicio.value; // Se asume válida
    var sFc1 = document.ssc.fechtermino.value; // Se asume válida
    var nDi0 = parseInt(sFc0.substr(0, 2), 10);
    var nMe0 = parseInt(sFc0.substr(3, 2), 10);
    var nAn0 = parseInt(sFc0.substr(6, 4), 10);
    var nDi1 = parseInt(sFc1.substr(0, 2), 10);
    var nMe1 = parseInt(sFc1.substr(3, 2), 10);
    var nAn1 = parseInt(sFc1.substr(6, 4), 10);
    var suma = parseInt(1);

    if (mayorOIgual(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1)){
     var nAno = anosEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);
     var nMes = mesesEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);
     var nDia = diasEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);
     var nTtM = nAno * 12 + nMes;
     var nTtD = nDia;
     
     for (var i = nAn0; i < nAn0 + nAno; i++) nTtD += diasDelAno(nAno);
     for (var j = nMe0; j < nMe0 + nMes; j++) nTtD += finMes(j, nAn1);
     var nTSS = Math.floor(nTtD / 7);
     var nTSD = nTtD % 7;
     var suma = nTtD++;
          document.ssc.diascometido.value = String(nTtD);
	  document.ssc.suma.value = String(nTtD)-1;

    } 
   }
Código HTML:
<form name = "ssc" action= "procviaticos.php"  method="post" onSubmit = "">

<table width="80%" cellspacing="1" cellpadding="2" border="1">
<tr>
      <th colspan= "" td bgcolor="" width="226"><font face = "Verdana" size = "1">Fecha de Inicio del Cometido:</font></td></th>
        <td bgcolor= "" ><input type="Text" name="fechinicio" onChange="if(this.value=='')ssc.diascometido.value=''">
	  
          
          </td>
    </tr></table>

<table width="80%" cellspacing="1" cellpadding="2" border="1">
<tr>
      <th colspan= "" td bgcolor="" width="226"><font face = "Verdana" size = "1">Fecha de Término del Cometido :</font></td></th>
        <td bgcolor= "" ><input type="Text" name="fechtermino"onchange="if(this.value=='')ssc.diascometido.value=''">
	  
          </td></tr></table>
<input type="Text" ReadOnly name="diascometido" value="" onFocus="calcula()">
<table width="80%" cellspacing="1" cellpadding="2" border="1">
<tr>
      <th colspan= "" td bgcolor="" width="226"><font face = "Verdana" size = "1">Valor del Pasaje:</font></td></th>
        <td bgcolor= "" ><input type="Text" name="valorpasaje" value="0" onFocus="if(this.value=='0')this.value='';" onBlur="if(this.value=='')this.value='0';"/>
 </td>
    </tr></table>
<input type="text" name="suma" onBlur="calcula()">
			<input type="text" name="viaticototal" onBlur="sumar()">
			<input type="text" name="viaticoparcial" onBlur="sumar()">
			<input type="text" name="a" onBlur="sumar()">
			<input type="text" name="b" onBlur="sumar()">
			<input type="text" name="c" onBlur="sumar()">
			<input type="text" name="d" onBlur="sumar()">

</form> 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:29.