billentyű leütés
Üdv!
Készítek egy egyszerű progit mégis gondom van vele.
Az a feladata, hogy kiírja melyik billentyűt nyomd le és azt kell tenni.
A probléma a text mező, szerintem nem felhasználóbarát. A Tab billentyűnél is elállítódik a fókusz. Többször bele kell kattintani a text mezőbe. A másik problémám az Enter leütésekor kezdi előröl. Miért? Lehetne text mező nélkül ezt?
A progit mellékelem.
■ Készítek egy egyszerű progit mégis gondom van vele.
Az a feladata, hogy kiírja melyik billentyűt nyomd le és azt kell tenni.
A probléma a text mező, szerintem nem felhasználóbarát. A Tab billentyűnél is elállítódik a fókusz. Többször bele kell kattintani a text mezőbe. A másik problémám az Enter leütésekor kezdi előröl. Miért? Lehetne text mező nélkül ezt?
A progit mellékelem.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
osz=0;rosszvalasz=0;
var tomb = new Array(
new Array("Nyomd le a Backspace-t!", 8),
new Array("Nyomd le a Tab-ot!", 9 ),
//new Array("Nyomd le az Enter-t!", 13),
new Array("Nyomd le a Shift-et!", 16 ),
new Array("Nyomd le a Ctrl-t!", 17),
new Array("Nyomd le az Alt-ot!", 18),
new Array("Nyomd le a Caps lock-ot!", 20),
new Array("Nyomd le az Escape-t!", 27),
new Array("Nyomd le a Page up-ot!", 33),
new Array("Nyomd le a Page down-t!", 34),
new Array("Nyomd le az End-et!", 35),
new Array("Nyomd le a Home-t!", 36),
new Array("Nyomd le a Bal nyilat!", 37),
new Array("Nyomd le a Fel nyilat!", 38),
new Array("Nyomd le a Jobbra nyilat!", 39),
new Array("Nyomd le az Le!", 40)
)
onload = function(){
field = document.getElementById('number_field')
field.onkeydown = keyhit
field.focus()
}
function keyhit(e)
{
if (e!=13){
thisKey = e ? e.which : window.event.keyCode
ell(thisKey) }
}
function ell(press)
{
max=tomb.length;
var ertekeles = 'helytelen';
var kerdes = document.getElementById("bill").innerHTML;
for ( i=0; i < tomb.length ; i++) {
if ((kerdes == tomb[i][0]) && (press == tomb[i][1])) { ertekeles = 'helyes';} }
if (ertekeles == 'helyes')
{ osz+=10;
a++;
document.getElementById("bill").innerHTML=tomb[a][0];
}else {alert('Hibás válasz!'+press); rosszvalasz++;}
if (a==max) {document.getElementById("bill").innerHTML="Vége"+a+' '+max ;}
}
</script>
</head>
<body bgcolor=ivory onbeforecopy="return false" oncontextmenu="return false" oncopy="return false" ondragstart="return false" onselect="return false" onselectstart="return false">
<center>
<h1><div id="bill" style="text-align:center; border:0px solid; padding:5px; width:100%; margin-left:auto; margin-right:auto;" ></h1>
<script>
a=0;
document.getElementById("bill").innerHTML=tomb[a][0];
</script>
<form action="" method="post">
<p><input type="text" id="number_field" name="number_field" value="HA NEM MEGY KATT IDE" size='30' maxlength='10'></p>
</form>
</center>
</body>
</html>
Alapok
Biztos vagyok, hogy hamarosan kapsz kész megoldásokat is, de ne foglalkozz velük, mert inkább csak gondot okoz, nem fogod látni a "nagy képet".
hiba
A Tab billentyűnél is
Ez teljesen természetes. Erre való a
Tab
gomb.Teljesen természetes, mivel ekkor elküldi a böngésző az űrlapot.
Mindkettőt meg lehet akadályozni azzal, hogy megakadályozod az események alapértelmezett működését:
false
értékkel térünk vissza.Természetesen lehet. Akkor viszont a
document
-en vagy abody
-n figyeld a gombok leütését.A new Array használata nem ajánlott, vannak ismert problémás esetei. Használd inkább a
["Nyomd le a Backspace-t!", 8]
formát.tovább
<script language="JavaScript">
window.captureEvents(Event.KEYPRESS);
window.onkeypress = kiad;
function kiad(Esemeny){
alert("Ön megnyomta a " + Esemeny.which + " gombot");
window.captureEvents(Event.KEYPRESS);
window.onkeypress = kiad;
}
</script>
</head><body>
Üssön le egy billentyűt!
</body></html>
A captureEvents függvényt
captureEvents
függvényt tanácsos elfelejteni, mert nem szabványos. HelyetteaddEventListener
.Egyébként ez a captureEvents
szerk.: ja nem ie-ben volt hanem mozilla-ban, de a kérdésem attol még fennál a custom event-el kapcsolatban.
Attól függ, mit nevezel
Érdekes módszerekkel
off
Ezt azt hiszem kissé
Sztem félre értesz, én oda
félreértés
Jó tett helyébe....
var
var
kulcsszóval, van, amit nem. Utóbbinak hatására a változó globális lesz, illetve a globális változó értékét módosítja, aminek lehetnek kellemetlen mellékhatásai. Ezért legjobb, ha minden változót, ami nem függvény argumentum,var
kulcsszóval inicializálsz.Fontos lenne, hogy a kódodat megfelelően, de legalább konzisztensen tagold, például hogy látszódjon, hol ér kezdődik egy
if
és hol végződik egyfor
ciklus.Teljesen igazad van. El
Ha valaki megajándékozna egy kész progival megköszönném.
Mindenkinek köszi a segítséget.
Kész megoldást nem adok, de
Köszi
Hogyan tovább?
Haha
kihasználni
Megköszönném mindenkinek ha csak a témáról írna és nem offolna vagy stb.
Ne haragudj
Nem tudsz felülemelkedni
Semmi közöm hozzá,
Viszont tényleg nincs közöm hozzá, tehát ha bárkit zavar ez a kommentem, nyugodtan törölhető.
Próbáltam nem piszkálódni.
Hú mi lett ebből.
Zárjuk le a témát.
A nextQuestion függvény
nextQuestion
függvény implementációját kellene befejezned. Ennek ki kellene írni az üzeneteket, valamint kezelni ha vége a mókának.