Ok, det var relaterat till onkeyup(). Litet klantigt kan tyckas... Nåväl
<script type="text/javascript">
var cc = null, /* checked radio */
nr = 0; /* # of rows */
function updateRow(elms, row, col)
{
switch (col){
case 1: case 2:
{
elms["textrutaSumma_" + row].value
= parseInt(elms["textruta" + row + "_1"].value || 0) + parseInt(elms["textruta" + row + "_2"].value || 0);
elms["textrutaTotal_" + row].value = Math.round(1.25 * elms["textrutaSumma_" + row].value);
} break;
case 3:
{
var tmp = elms["textrutaSumma_" + row].value - elms["textruta" + row + "_1"].value;
if (tmp < 0){
elms["textruta" + row + "_2"].value = 0;
elms["textruta" + row + "_1"].value = elms["textrutaSumma_" + row].value;
} else {
elms["textruta" + row + "_2"].value = tmp;
}
elms["textrutaTotal_" + row].value = Math.round(elms["textrutaSumma_" + row].value * 1.25);
} break;
case 4:
{
elms["textrutaSumma_" + row].value = Math.round(elms["textrutaTotal_" + row].value / 1.25);
var tmp = elms["textrutaSumma_" + row].value - elms["textruta" + row + "_1"].value;
if (tmp < 0){
elms["textruta" + row + "_2"].value = 0;
elms["textruta" + row + "_1"].value = elms["textrutaSumma_" + row].value;
} else {
elms["textruta" + row + "_2"].value = tmp;
}
} break;
}
}
function f(i,e)
{
if (!cc){
alert("no radio button checked!");
return;
}
if (g(i,e)){
return;
}
var elms = i.form.elements;
if (/^textruta(\d+)/i.test(i.name)){
if (RegExp.$1 == cc.charAt(cc.length - 1)){
/* change all rows */
for (var k = 1; k <= nr; ++k){
elms["textruta" + k + "_" + parseInt(i.name.charAt(i.name.length - 1))].value
= i.value;
updateRow(elms, k, parseInt(i.name.charAt(i.name.length - 1)));
}
} else {
/* change this row only */
updateRow(elms, RegExp.$1, parseInt(i.name.charAt(i.name.length - 1)));
}
} else if (/^textruta(summa|total)_(\d+)/i.test(i.name)){
if (RegExp.$2 == cc.charAt(cc.length - 1)){
/* change all rows */
var s = RegExp.$1;
for (var k = 1; k <= nr; ++k){
elms["textruta" + s + "_" + k].value = i.value;
updateRow(elms, k, 4 - /^summa$/i.test(s));
}
} else {
/* change this row only */
updateRow(elms, RegExp.$2, 4 - /^summa$/i.test(RegExp.$1));
}
}
}
function g(i,e)
{
var kc = (window.event) ? window.event.keyCode : (e) ? e.keyCode : null;
if (!kc) return 0;
if (!((kc >= 48 && kc <= 58) || kc == 8 || kc == 9 || kc == 16 || (kc >= 37 && kc <= 40))){
if (window.event){
window.event.returnValue = false;
} else {
e.preventDefault();
}
return 1;
}
return 0;
}
window.onload = function()
{
var i = document.getElementsByTagName("INPUT"),
l = i.length;
while (l--){
if (/^radio$/i.test(i.item(l).type)){
if (i.item(l).checked){
cc = i.item(l).value;
}
if (i.item(l).name == "c"){ /* for counting the # of rows */
++nr;
}
}
}
}
</script>
<form>
<input type="radio" name="c" value="cb1" onclick="cc = this.value" checked="checked"><input name="textruta1_1" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> + <input name="textruta1_2" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> = <input name="textrutaSumma_1" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> * 1,25 = <input name="textrutaTotal_1" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"><br>
<input type="radio" name="c" value="cb2" onclick="cc = this.value"><input name="textruta2_1" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> + <input name="textruta2_2" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> = <input name="textrutaSumma_2" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> * 1,25 = <input name="textrutaTotal_2" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"><br>
<input type="radio" name="c" value="cb3" onclick="cc = this.value"><input name="textruta3_1" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> + <input name="textruta3_2" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> = <input name="textrutaSumma_3" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"> * 1,25 = <input name="textrutaTotal_3" onkeypress="g(this,event)" onkeyup="f(this,event)" onkeydown="g(this,event)"><br>
</form>
De radspecifika värdena har ej tagits med. Får titta på det i helgen eller möjligtvis nästa vecka (såvida du inte gör ett försök).
Vidare har väl inte funktionerna f(), g() särskilt deskriptiva namn. Du kanske vill döpa om dem.