[Megoldva] Javascript - "eseménykezelés" - IE vs. többiek

Sziasztok!

Előre bocsátom, hogy nem vagyok egy JS haxor, mivel nincs szükségem nagy és bonyolultnak mondható kódok írására.
Eddig felmerült problémáimat ennek megfelelően google+experimenting módon sikerült megoldani. Azonban most kissé
megakadtam és kb. 1 hete nem jutok dűlőre az alább vázolt problémával.

Adott egy form, melyen text típusú input mezők leledzenek. Ezen mezőkbe a felhasználó egész számokat ír (ennek
ellenőrzését js-ből, illetve php-ból végzem). A mezők egy-egy fő "probléma" alábontását tartalmazzák. Ennek
megfelelően, a "probléma" számszerű értékét a részek összegeként állítom elő, hogy a felhasználónak evvel ne
kelljen foglalatoskodni. A művelet elvégzésére írtam egy összegző fv-t, ami a megadott bemeneti mezőkből kiolvassa
a számokat, majd a megadott kimeneti mezőbe kiírja az összeget. Namost, ezeket az eljárásokat az input-ok
onChange eseményére hívom. A probléma, hogy míg FF alatt onChange-re korrektül számol a kis taknyolmány,
addig IE 6 és 7-ben a francért sem akar működni a dolog. Sokat google-oztam, kipróbáltam az onBlur-tól az onKey*-on át
minden eseményt, setTimeout fv-t, de semmi eredmény (Míg mondjuk egy select onchange eseményére hívva működik).
Szeretném kérdezni, hogy az alább vázolt kódot milyen módosítással lehetne rábírni arra,
hogy IE alatt is korrektül tegye a dolgát? (Megjegyzendő, hogy ha az alábbi kód calc(mezok, eredmeny) fv-ét a megfelelő input mezők onchange
eseményére közvetlenül hívom, akkor IE alatt is működik. Ez azonban nem "elegáns" megoldás, tekintve, hogy több oldalas adatlapokról van szó,
ahol egy-egy összeg akár 10-15 mező összege is lehet, így pl. egy későbbi módosítás meglehetősen fájdalmas lenne a későbbi
karbantartónak.)

A JS a head-ben elhelyezve:


<script language="JavaScript" type="text/javascript">
function calc(mezok, eredmeny)
{
	var osszeg = 0;
	for(i=0; i != mezok.length; i++)
	{
		var novekmeny = 0;
		if( isNaN(parseInt(document.getElementById(mezok[i]).value)) )
		{
			novekmeny = 0;
		} else {
			novekmeny = parseInt(document.getElementById(mezok[i]).value);
		}
		osszeg += novekmeny;
	}
							
	document.getElementById(eredmeny).innerHTML = osszeg.toString();
}
						
function recalc()
{
	calc( new Array('uj_gege', 'uj_szajureg', 'uj_garat'), 'uj_tumoros_osszesen');
}
</script>

Részlet a form kódjából:


<label>Újonnan felfedezett tumorosok száma összesen: </label><a id="uj_tumoros_osszesen"></a>

<label for="uj_gege">• gége: </label><input type="text" id="uj_gege" name="uj_gege" size="10" maxlength="9" onchange="recalc();">

<label for="uj_garat">• garat: </label><input type="text" id="uj_garat" name="uj_garat" size="10" maxlength="9" onchange="recalc();">

<label for="uj_szajureg">• szájüreg: </label><input type="text" id="uj_szajureg" name="uj_szajureg" size="10" maxlength="9" onchange="recalc();">

Minden építő jellegű hozzászólást hálásan köszönök!

Hozzászólások

maga az esemeny lefut(na)?
(tehat pl egy alert('foobar')

t

Előre bocsátom, hogy nem vagyok egy JS haxor, mivel nincs szükségem nagy és bonyolultnak mondható kódok írására.
Akkor javaslom a jQuery függvénykönyvtárat, ez elvégzi helyetted a piszkos melót, azaz hogy pl. az onChange esemény böngészőfüggetlen legyen. :)

Nem lehet, hogy az adott szkopban nem definialt a fuggvenyed?

PS.
Ajanlom IE developer toolbart, ha explorerrel kell dolgozz. Me'g inkabb valamilyen js frameworkot, pl jquery, prototype, amik eleg pehelysulyuak, de sok gubanctol megkimelnek.

ne használd a recalc() nevet, nevezd el másképpen a függvényedet

Latom, solved, de azert illik az esemenyekhez egy javascript: elotagot tenni. onChange="javascript:re_calc();"
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.