Autor | Zpráva | ||
---|---|---|---|
horakcl Profil |
#1 · Zasláno: 15. 4. 2009, 11:18:05
Tento kód:
<body onLoad="Nuluj()"; onKeyPress="alert(event.KeyCode)";> vypíše po stisku klávesy - asi jakékoliv- undefined Proč ? |
||
Chamurappi Profil |
#2 · Zasláno: 15. 4. 2009, 11:44:55 · Upravil/a: Chamurappi
Reaguji na horakcl:
Protože tam má být event.keyCode a nikoliv event.KeyCode. Na velikosti písmen záleží. U onkeypress zřejmě narazíš na nekompatibilitu mezi prohlížeči, použij raději onkeydown (či onkeyup). |
||
horakcl Profil |
Díky,
ale mám další problém: function Klavesa(kl) { alert(kl); alert(String.fromCharCode(kl)); for (Property in kl) document.write(Property + "=" + Property.value + " - "); alert (kl); if (kl == "," || kl == ".") { Carka(); return; } if (kl >= "*" &&" kl < "/") { Spocti(kl); return; } if (kl >= "0" && kl <= "9") { Cislo(ParseInt(kl)); return; } return; } </script> </head> <body onLoad="Nuluj()"; onKeyDown="Klavesa(event.keyCode)";> Když zmáčnknu "9" tak 1. alert vrátí 105, druhý "i", je to snad nějaké jiné číslování ? |
||
Chamurappi Profil |
#4 · Zasláno: 15. 4. 2009, 13:26:01 · Upravil/a: Chamurappi
Reaguji na horakcl:
Protože číslo klávesy (zpravidla) neodpovídá číslu znaku. Kdybys chtěl číslo znaku, musel bys použít ten onkeypress a pak zkoumat charCode i keyCode, protože různé prohlížeče se chovají různě. Není mi moc jasné, co by měl dělat zbytek té funkce. (Ta for-in smyčka.) |
||
horakcl Profil |
#5 · Zasláno: 15. 4. 2009, 13:31:57
Zbytek té funkce volá různé funkce pro kalkulačku. Už jsem to upravil tak, že odečtu 48 a funguje to:
function Klavesa(code) { var k = code - 48; var kl = String.fromCharCode(k); if (kl == "," || kl == ".") { Carka(); return; } if (kl >= "*" && kl < "/") { Spocti(kl); return; } if (kl >= "0" && kl <= "9") { Cislo(parseInt(kl)); return; } return; } </script> </head> <body onLoad="Nuluj()"; onKeyDown="Klavesa(event.keyCode)";> Díky za pomoc. |
||
horakcl Profil |
#6 · Zasláno: 15. 4. 2009, 14:11:15
Jo, zapomněl jsem vysvětlit tu for smyčku - to byl pozůstatek ze zkoumání event, která se předávala, už tam není.
|
||
Časová prodleva: 15 let
|
0