JavaScript kalkulacija

Ja i JS nismo baš najveći prijatelji tako da mi vjerojatno promiče nešto očito. Funkcija je za sdaa vrlo jednostavna:

function Calculate()
{
	if (coverage.dt1.value)
	coverage.tc1.value = coverage.sbv1.value / 10 * coverage.dt1.value;
	if (coverage.pcl.value)
	coverage.pcl1.value = coverage.tc1.value * (1 - coverage.pcl.value);
}

Imam form koji ima nekoliko polja i automatski računa određene vrijednosti ovisno o upisanim brojevima. Ono što se događa je sljedeće:
Nakon što upišem vrijednost u dt1 i sbv1 polja, tc1 se automatski updatea u realnom vremenu (onkeypress). Do sada je sve ok.
Međutim, čim upišem vrijednost u pcl polje, iz nekog razloga se tc1 pomnoži sa 10!?

Gdje griješim?

Usput, ima li načina da onkeypress reagira i za delete, tako da se vrijednosti updateaju i kod brisanja zadnje znamenke? Hvala svima.

Prednost koristenja smislenih imena varijablama je u tome da covjek skuzi sta zelis napraviti. :smiley:

Osim toga, stavio si dio koda iz kojeg se nista ne moze skuziti.

Mda, pomračenog sam uma. Evi i pripadajući html:

<form name="coverage">
<table>
<tr><th>Products</th><th>Solids by volume</th><th>Dryfilm Thickness</th><th>Theoretical coverage</th><th>Practical Coverage Loss: 		<select onChange="Calculate();" name="pcl" class="special_value">
	    <option value="0">0%</option>
	    <option value="0.1">10%</option>
	    <option value="0.2">20%</option>
	    <option value="0.3">30%</option>
	  </select></th><th>Area size</th><th>Estimated Quantity</th><th>Price per Liter</th><th>Price per m2</th><th>Estimated total cost</th></tr>
<tr><td>Units</td><td>%</td><td>Microns</td><td>m2/Liter</td><td>m2/Liter</td><td>m2</td><td>Liters</td><td>Euro</td><td>Euro</td><td>Euro</td></tr>
<tr><td>TEMP-COAT</td><td><INPUT TYPE="TEXT" NAME="sbv1" SIZE="5"
	onKeyPress="Calculate();"></td><td><INPUT TYPE="TEXT" NAME="dt1" SIZE="5"
		onKeyPress="Calculate();"></td><td><INPUT TYPE="TEXT" NAME="tc1" SIZE="8" disabled="disabled"></td><td><INPUT TYPE="TEXT" NAME="pcl1" SIZE="8"></td><td>156</td><td>173</td><td>0,00</td><td>0,00</td><td>0,00</td></tr>
<tr><td>Silent Running</td><td>75</td><td>500</td><td>1,50</td><td>1,20</td><td>100</td><td>83</td><td>0,00</td><td>0,00</td><td>0,00</td></tr>
<tr><td>Ex.: 100% Solids</td><td>75</td><td>500</td><td>1,50</td><td>1,20</td><td>100</td><td>83</td><td>0,00</td><td>0,00</td><td>0,00</td></tr>
<tr><td>You need</td><td colspan="2">Liters of coating:</td><td colspan="3"></td><td colspan="2">Euro:</td><td colspan="2">Euro</td></tr>
</table>
</form>

Upomoć! :slight_smile:

Oper 11.0, sve funkvionira najnormalnije. Znači polje pcl1 se ne update-a, a što se tiče brisanja zadnje znamenke i update polja to isto radi. Barem onako kako mislim da bi trebalo raditi jer nisi baš najbolje objasnio problem.

Creatof, hvala…ja naime isto koristim Operu, i događa se sljedeće (pokušat ću biti čim jasniji):
Upišem vrijednost u polje dt1. Upišem vrijednost u sbv1 polje. Sve je ok, vrijednost u tc1 se automatski updejta.
Međutim čim promijenim vrijednost u drop-downu pcl, postojeća vrijednost u tc1 dobije ekstra nulu na kraju. Možeš li potvrditi dsa se kod tebe ovo ne događa? Trebalo bi, jer sma isprobao na Operi i Chromeu.

Što se znamenki tiče, ako deletaš zadnju znamenku u dt1 ili sbv1, tc1 ti se updatea? Meni se to događa samo ako upisujem vrijednost, ne i dok je brišem.

Hvala!

dodaj ovo u funkciju

function Calculate()
  {
    var coverage  = document.getElementById('coverage');

i id u form

i to bi tribalo biti to

[quote=“Riba”]
Što se znamenki tiče, ako deletaš zadnju znamenku u dt1 ili sbv1, tc1 ti se updatea? Meni se to događa samo ako upisujem vrijednost, ne i dok je brišem.

Hvala![/quote]

umisto onkeypress stavi onkeydown

Tek sad vidjeh nove odgovore, došao da ostavim rješenje… moguće da bi i onkeydown radio, stavio sam onkeyup i to je riješilo stvar - eto info ako netko poljubi sličan problem. Hvala svima!

Nice codes and i hope these are very helpful for me.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja