webForumDet fria alternativet
Logga in / Bli medlem

Räkna ihop värden?

JavaScript

13 svar · 413 visningar · startad av harry_boy

Medlem sedan feb. 2003193 inlägg
Trådstart#1

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?

Medlem sedan nov. 20017 144 inlägg
#2

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>
Medlem sedan feb. 2003193 inlägg
#3

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!

Medlem sedan dec. 20025 483 inlägg
#4

Använd då onblur istället för onmouseout.

:)

Medlem sedan feb. 2003193 inlägg
#5

Suveränt ... tusen tack!!

Medlem sedan feb. 2003193 inlägg
#6

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

Medlem sedan nov. 20017 144 inlägg
#7

Vad är fel, vad händer/händer inte? Felmeddelande?

Medlem sedan feb. 2003193 inlägg
#8

Den räknar inte fram värdet i fältet "belopp_1"!

Medlem sedan nov. 20017 144 inlägg
#9

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);
Medlem sedan feb. 2003193 inlägg
#10

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?

Medlem sedan nov. 20017 144 inlägg
#11

testa att ta bort alla underscores ( _ )

Medlem sedan dec. 20025 483 inlägg
#12

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.

:)

Medlem sedan feb. 2003193 inlägg
#13

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!

Medlem sedan dec. 20025 483 inlägg
#14

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.

:)

266 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)