Robert: returnwert von Eventhandler wird ignoriert

Hallöle,

Folgender (aufs wesentliche reduzierte) Code

  
elem = document.getElementById("myInput");  
elem.onkeydown  = dp_onkeydown;  
elem.onkeypress = dp_onkeypress;  
elem.onkeyup    = dp_onkeyup;  
  
function dp_onkeydown(e)  
{  
  if (!e) e = self.event;  
  if (e.keyCode == 32)  
  {  
     alert("LEERTASTE");  
     return false;  
  }  
  return true;  
}  
  
function dp_onkeypress(e)  
{  
  if (!e) e = self.event;  
  if (e.keyCode == 32)  
  {  
     alert("LEERTASTE");  
     return false;  
  }  
  return true;  
}  
  
function dp_onkeyup(e)  
{  
  if (!e) e = self.event;  
  if (e.keyCode == 32)  
  {  
     alert("LEERTASTE");  
     return false;  
  }  
  return true;  
}  

verhält sich nicht ganz so wie ich es gerne hätte.

Was hätte ich gerne:
Wenn das Element <input type="text" id="myInput"> den Focus hat und die Leertaste gedrückt wird, soll der alert (stellvertretend für die später einzusetzende eigentliche Aktion) erscheinen, das Leerzeichen soll verschluckt werden. Alle anderen Tastendrücke sollen sich wie immer verhalten, sprich: die entsprechenden Zeichen ins Input eingetragen werden bzw. mit tab zum nächsten Feld gesprungen usw.

Was tatsächlich passiert:
Beim Druck der Leertaste erscheint der alert, zusätzlich wird aber das Leerzeichen ins input-Feld eingetragen.

Ich dachte eigentlich, daß das return false; das Weiterverarbeiten des Ereignisses unterdrückt, womit das Leerzeichen nicht eingetragen werden dürfte (bei allen anderen Tasten geb ich true zurück, damit das Weiterverarbeiten des Ereignisses auch klappt).

Auch das zusätzliche Abfangen der anderen Key-Ereignisse hat nichts gebracht - das Leerzeichen wird eingetragen.

Ich habe den Eindruck, daß mein Returnwert vollständig ignoriert wird.

Was kann ich dagegen tun?

cu,
Robert

  1. Hallihallo!

    Was kann ich dagegen tun?

    Ich würde vorschlagen, einfach das/die eingegebene(n) Leerzeichen zu suchen und zu entfernen. Das müsste nichtmal bei jedem Tastenanschlag geschehen, sondern einfach beim Verlassen des input- Feldes (onblur).

    Ich hoffe, das hilft Dir weiter.

    Viele liebe Grüße,
    Der Dicki

  2. Hallo Robert,

    Wenn das Element <input type="text" id="myInput"> den Focus hat und die Leertaste gedrückt wird, soll der alert (stellvertretend für die später einzusetzende eigentliche Aktion) erscheinen, das Leerzeichen soll verschluckt werden.

    Du willst also die Default-Aktion unterdrücken. Dabei gibt es für den IE selbstverständlich wieder mal eine andere Technik als für Browser.

    http://forum.de.selfhtml.org/archiv/2005/10/t117350/#m751670

    Der Rest des Threads könnte für deine Zwecke auch ganz hilfreich sein.

    Gruß Gernot

  3. Hallöle,

    Danke Euch beiden, komme wegen Unfall leider erst jetzt dazu, mich zu melden.

    Ich werd mir Eure Vorschläge mal angucken, kann aber momentan dank Gips und Schmerzen nicht viel tippen, also werden die Tests noch etwas warten müssen ...

    cu,
    Robert