Очень неэффективно добавлять прослушиватели событий для каждого входа. Вместо этого используйте делегата (поместив одного слушателя на родителя). Добавьте прослушиватель событий к <form>
(в моем примере я назвал его sums
).
Демо: http://jsfiddle.net/ThinkingStiff/KWTLu/
Сценарий:
document.getElementById( 'sums' ).addEventListener( 'keyup', function ( event ) {
if( event.target.name.substr( 0, 4) == 'p_at' ) {
var index = event.target.name.substr( 5, 1 ),
inputs = document.querySelectorAll( 'input[name^="p_at\[' + index + '"]' ),
value = 0;
for ( var i = 0; i < inputs.length; i++ ) {
value += window.Number( inputs[i].value ) || 0;
};
document.getElementsByName( 'sum[' + index + ']' )[0].value = value;
};
}, false );
HTML:
<form id="sums">
<input type="text" value="1" name="p_at[0][65]">
<input type="text" value="1" name="p_at[0][66]">
<input type="text" value="1" name="p_at[0][67]"><br />
<input type="text" value="0" name="sum[0]"><br />
<input type="text" value="1" name="p_at[1][65]">
<input type="text" value="1" name="p_at[1][66]">
<input type="text" value="1" name="p_at[1][67]"><br />
<input type="text" value="0" name="sum[1]">
</form>