Dennis: Passwort-Abfrage mit Enter bestätigen

Im folgenden Beispiel befinden sich zwei Eingabefelder, wovon eines auf "readonly" gesetzt wurde. Das hat nur für den Internet Explorer Folgen. Für Netscape und für den MSIE werden die Tastatureingaben überwacht. Der Nachteil bei Netscape ist allerdings, dass der das auch außerhalb des Eingabefeldes tut, im Gegensatz zum Internet Explorer. Das Passwort ist zusätzlich noch leicht verschlüsselt, und zwar sind die Buchstaben in hexadezimaler Form angegeben, was zur Folge hat, dass es nicht einfach so im Quelltext zu erkennen ist.

<form name="tester">

Passwort: <input type=password name="wert1" size=8
   maxlength=8 onKeypress="ueberwach();">

<input type=button value="-->" name="Uebermitteln"
   onClick=uebertrag();>

<input type=text name="wert2" size=8 maxlength=8 readonly>

<input type=reset value=Neu>

</form>

<script language="JavaScript">
   <!--
   function ueberwach()
   {
   if (navigator.appName == "Microsoft Internet Explorer")
   {
   if (window.event.keyCode == "13")
   { uebertrag(); }
   }
   else
   {
   document.captureEvents(Event.KEYPRESS);
   document.onkeypress = confirm;
   }
   }

function confirm(taste)
   {
   if (taste.which == "13")
   {
   uebertrag();
   }
   }

function uebertrag()
   {
   if(document.tester.wert1.value == unescape("%77%65%72%74%6C%6F%73"))
   { document.tester.wert2.value = "korrekt!" }
   else
   { document.tester.wert2.value = "falsch!" }
   }
   //-->
   </script>

Mit dem Event-Handler onKeypress wird die Funktion "ueberwach()" bei jeder Tastatureingabe aufgerufen. Sie prüft, ob es sich beim Browser um den Internet Explorer handelt oder nicht. Wenn ja, wird nach IE-Syntax überprüft, ob die gedrückte Taste die Enter-Taste ist. Sollte das der Fall sein, wird die Funktion "uebertrag()" aufgerufen. Sollte der Browser nicht der Internet Explorer sein, wird erst noch die Überwachung gestartet, sollte dann eine Taste gedrückt werden, wird die Netscape-Funktion "confirm()" aufgerufen, die das gleiche erledigt, wie vorhin die Syntax für den Internet Explorer. Die Funktion "uebertrag()" wird also nur dann aufgerufen, wenn man die Enter-Taste drückt. Und die vergleicht dann die Eingabe mit dem in hexadezimaler Form angegeben Passwort ("wertlos"). Sollten die Angaben übereinstimmen, erscheint "korrekt!" auf dem Bildschirm, ansonsten "falsch!". Das kann allerdings auch durch Drücken auf den Knopf "-->" geschehen. Die Eingaben werden per Klick auf "neu" komplett gelöscht.

Wundert euch nicht über die Textformulierung, sie ist Element einer Datei der Homepage meiner Klasse. Mein Prolem ist jedenfalls, dass Netscape auch noch die Tastaturbefehle überwacht, wenn sich der Cursor nicht mehr im Eingabefeld befindet. Das ist unnötig, ärgerlich und unpraktisch, wenn man weitere Felder mit Enter überwachen lassen möchte. Sollte eine Möglichkeit bestehen, im <form>-tag ein JavaScript als "action=" anzugeben, bitte Bescheid sagen, das könnte ja auch eine Lösung darstellen.