Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/10/2010, 16:43
Avatar de _cronos2
_cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Autocompletar campo con Suma de otros campos

Ejemplo:
Código HTML:
Ver original
  1. <form name="a" action="" method="post">
  2. 1:<input type="text" id="sum_1" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />
  3. 2:<input type="text" id="sum_2" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />
  4. 3:<input type="text" id="sum_3" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />
  5. 4:<input type="text" id="sum_4" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />
  6. 5:<input type="text" id="sum_5" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />
  7. 6:<input type="text" id="sum_6" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />
  8. Resultado:<input type="text" id="res" value='0' onfocus='this.blur();' />
  9. </form>
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function sumar(c){
  3.  var total=0;
  4.  for(i=0;input=c.form.elements[i];i++){
  5.   if(/^sum_/.test(input.id)){
  6.    input.value=input.value.replace(/[A-z]/,'');
  7.    total+=parseInt(input.value);
  8.   }
  9.  }
  10.  document.getElementById('res').value=isNaN(total)?document.getElementById('res').value:total;
  11. }
  12. function val(c,v,t){
  13.  c.value=c.value==t?v:c.value;
  14. }
  15. </script>
Como ves para que funcione tienes que poner sum_ al principio de la id de cada input a sumar, los que no empiecen por esa id no serán tomados en cuenta (puedes probarlo con hiddens, campos ocultos, etc. dándoles un value predefinido y verás que no se suma). También ves que el value del campo es 0 por defecto, y si recibe el foco se borra, y si pierde el foco pone 0 si el value es ''. También ves isNaN(total)... Esto es porque si pones una letra en el input te la borra en seguida, pero antes de que te la borre el value del campo resultado es NaN, y queda poco estético. Así, si escribes una letra el value del campo es el que tenía antes. Si tienes alguna duda más dímelo.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red