Ejemplo:
Código HTML:
Ver original<form name="a" action="" method="post"> 1:
<input type="text" id="sum_1" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />2:
<input type="text" id="sum_2" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />3:
<input type="text" id="sum_3" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />4:
<input type="text" id="sum_4" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />5:
<input type="text" id="sum_5" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />6:
<input type="text" id="sum_6" value="0" onkeyup='sumar(this);' onkeydown='sumar(this);' onfocus="val(this,'','0');" onblur="val(this,'0','');" /><br />Resultado:
<input type="text" id="res" value='0' onfocus='this.blur();' />
Código Javascript
:
Ver original<script type="text/javascript">
function sumar(c){
var total=0;
for(i=0;input=c.form.elements[i];i++){
if(/^sum_/.test(input.id)){
input.value=input.value.replace(/[A-z]/,'');
total+=parseInt(input.value);
}
}
document.getElementById('res').value=isNaN(total)?document.getElementById('res').value:total;
}
function val(c,v,t){
c.value=c.value==t?v:c.value;
}
</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 (: