Om man har ett formulär med 3 rutor där 2 rutor har 2 värden och man vill ha resultatet i en 3:e ruta, hur gör man då? Kan man göra det utan att uppdatera sidan eller måste man ha en knapp där man uppdaterar fälten?
Räkna ihop värden?
13 svar · 413 visningar · startad av harry_boy
Testa detta:
<script>
function calc(){
document.form1.val3.value = eval(document.form1.val1.value) + eval(document.form1.val2.value);
};
</script>
<form name="form1">
Värde1:<input type="text" name="val1"><br>
Värde2:<input type="text" name="val2"><br>
Summa:<input type="text" name="val3"><br>
<input type="button" onclick="calc();" value="Räkna">
</form>
Funkar kanonbra ... provade med onmouseout på fält 2 ... men då räknar den bara ut om jag kör musen över men jag vill att det skall funka när "jag lämnar fältet" inte när jag kör musen över ... i denna funktionen så hoppas man mellan fälten med tab-tangenten och vill således att det skall räkna ut när jag lämnar 2:an ....
Tack för ett snabbt svar!
Suveränt ... tusen tack!!
Jag har fortfarande lite problem med att få det att funka, är det någon som vet vad det kan vara?
<script language="JavaScript">
<!--
function radtotal()
{
document.order.belopp_1.value = eval(document.order.1_antal.value) * eval(document.1_apris.value);
document.order.belopp_2.value = eval(document.order.2_antal.value) * eval(document.2_apris.value);
document.order.belopp_3.value = eval(document.order.3_antal.value) * eval(document.3_apris.value);
document.order.belopp_4.value = eval(document.order.4_antal.value) * eval(document.4_apris.value);
document.order.belopp_5.value = eval(document.order.5_antal.value) * eval(document.5_apris.value);
document.order.belopp_6.value = eval(document.order.6_antal.value) * eval(document.6_apris.value);
document.order.belopp_7.value = eval(document.order.7_antal.value) * eval(document.7_apris.value);
document.order.belopp_8.value = eval(document.order.8_antal.value) * eval(document.8_apris.value);
document.order.belopp_9.value = eval(document.order.9_antal.value) * eval(document.9_apris.value);
}
-->
</script>
<tr>
<td width="235">
<input type="text" name="1_spec" value="<?=$data["1_spec"];?>" class="txtbox" style="width:95%;"> </td>
<td width="60">
<input type="text" name="1_antal" value="<?=$data["1_antal"];?>" class="txtbox" style="width:90%;"> </td>
<td width="60">
<select name="frm_nagot" class="txtbox" style="width:90%;">
<option value="st">st</option>
<option value="tim">tim</option>
</select>
</td>
<td width="70">
<input type="text" name="1_apris" value="<?=$data["1_apris"];?>" class="txtbox" style="width:90%;" onblur="radtotal();">
</td>
<td width="80">
<input type="text" name="belopp_1" value="<?php if(!($data["1_belopp"] == "")) { echo $data["1_belopp"]; } else { echo "0"; }?>" class="txtbox" style="width:80%;"> kr
</td>
</tr>
Tack på förhand
Vad är fel, vad händer/händer inte? Felmeddelande?
Den räknar inte fram värdet i fältet "belopp_1"!
Här har du nog glömt formulärets namn:
document.order.belopp_1.value = eval(document.order.1_antal.value) * eval(document.[b]order[/b].1_apris.value);
Du har rätt ... jag hade glömt det men jag får det ändå inte att räknas ut! Kan det vara något mer?
testa att ta bort alla underscores ( _ )
1. I den kod du postade finns inget formulärelement med namnet order.
2. Namn på t.ex. "input"-fält måste börja med en bokstav, _ , eller $.
3. I dina beräkningar är fler element involverade än vad som finns i den kod du postade.
:)
Ursäkta mig Peter, jag klippte bara in en del av koden för den tog så mycket plats annars! Formen startar med enligt nedan:
<form method="post" action="?p=order&action=update&id=<?=$order_id;?>" name="order" onsubmit="javascript:return check_order_forms();">
Svar på fråga 2 är:
Menar du att jag inte kan skriva typ 1_antal utan måste ha antal_1 istället?
Svar till fråga 3 är:
Jag klippte ur där också av platssjäl, för de övriga raderna bygger på samma som den raden jag postade!
Jag kan göra det enklare om Ni vill ha mer kod att titta på!
Tackar så länge!
Som sagt, namnen måste börja med en bokstav, _ , eller $. Sedan är det inte nödvändigt att ha med javascript: i onsubmit-attributet.
:)