Hm, jag glömde visst att aktivera funktionaliteten för de fält vars radioknapp ej är ikryssad ;)
<script type="text/javascript">
var cc = null, /* checked radio */
nr = 0; /* # of rows */
function updateRow(elms, row, col)
{
switch (col){
case 1:
{
var tmp = elms["textrutaSumma_" + row].value - elms["textruta" + row + "_1"].value;
if (tmp < 0){
elms["textruta" + row + "_2"].value = 0;
elms["textrutaSumma_" + row].value = elms["textruta" + row + "_1"].value;
elms["textrutaTotal_" + row].value = Math.round(1.25 * elms["textrutaSumma_" + row].value);
} else {
elms["textruta" + row + "_2"].value = tmp;
}
} break;
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:
{
elms["textrutaSumma_" + row].value
= parseInt(elms["textruta" + row + "_1"].value) + parseInt(elms["textruta" + row + "_2"].value);
elms["textrutaTotal_" + row].value = Math.round(1.25 * elms["textrutaSumma_" + row].value);
} break;
case 4:
{
elms["textruta" + row + "_2"].value
= Math.round(elms["textrutaTotal_" + row].value / 1.25) - elms["textruta" + row + "_1"].value;
elms["textrutaSumma_" + row].value
= parseInt(elms["textruta" + row + "_1"].value || 0) + parseInt(elms["textruta" + row + "_2"].value || 0);
} break;
}
}
function f(i,e)
{
if (!cc){
alert("no radio button checked!");
return;
}
e = e || window.event;
if (!e || e.keyCode == 9 || 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 (/^textrutaSumma_(\d+)/.test(i.name)){
var val = i.value - elms["textruta" + RegExp.$1 + "_1"].value;
if (RegExp.$1 == cc.charAt(cc.length - 1)){
/* change all rows */
for (var k = 1; k <= nr; ++k){
elms["textruta" + k + "_2"].value = val;
updateRow(elms, k, 3);
}
} else {
/* change this row only */
elms["textruta" + RegExp.$1 + "_2"].value = val;
updateRow(elms, RegExp.$1, 3);
}
} else if (/^textrutaTotal_(\d+)/.test(i.name)){
if (RegExp.$1 == cc.charAt(cc.length - 1)){
/* change all rows */
for (var k = 1; k <= nr; ++k){
elms["textrutaTotal_" + k].value = i.value;
updateRow(elms, k, 4);
}
} else {
/* change this row only */
updateRow(elms, RegExp.$1, 4);
}
}
}
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>