Hallo,
Ich möchte, dass ein Kennwort-input-Feld auf die Länge des eingegebenen Strings geprüft wird. Wenn das Kennwort kürzer als 6 Zeichen ist, soll eine Korrekturaufforderung hochpoppen, das Kennwort-input-Feld den Fokus erhalten und der eingegebene Text selektiert werden.
die Absicht kann ich nachvollziehen, aber ich würde diese Überprüfung nicht während der Eingabe durchführen (denn das ist sehr störend), sondern erst, wenn der Benutzer die Eingabe beendet - sprich: Beim Absenden.
function checkPwLength() {
pw = window.document.Anmelden.elements[2].value;
if ( pw.length < 6 ) {
alert("Bitte geben Sie ein Kennwort mit mindestens 6 Zeichen an.");
window.document.Anmelden.elements[2].focus();
window.document.Anmelden.elements[2].select();
return false;
}
}
Ich überlege gerade, ob die Reihenfolge von focus() und select() nicht genau umgekehrt sein müsste, damit der Text auch selektiert ist, aber da bin ich nicht sicher.
> Die Funktion rufe ich mittlerweile mit dem onchange-Event des input-Feldes auf. Davor habe ich es mit onblur versucht.
Also dann, wenn das Eingabefeld den Focus verliert und/oder verändert wurde. Das bedeutet, ich werde zu einer bestimmten Reihenfolge beim Ausfüllen gezwungen - ich darf nicht einmal zwischendurch zu einem anderen Fenster wechseln. Nicht schön. So eine Eingabemaske wäre für mich ein Grund, Javascript für diese Seite abzustellen, weil's stört. :-(
> Ich möchte konkret verhindern, dass das darauffolgende input-Feld (Kennwort-Bestätigung) den Fokus erhält, bevor nicht sichergestellt ist, dass das Kennwort mindestens 6 Zeichen hat.
Warum? Lass die Leute doch erstmal in Ruhe ihre Daten eingeben. Wenn ich mir einen Vertrag gründlich durchlese und ggf. Passagen des Standardtextes streiche, nervt es mich ja auch, wenn mein Gegenüber sagt, "Da! Hier! Auf der letzten Seite! Unterschreiben Sie einfach! Da unten!"
Deswegen würde ich dir wärmstens empfehlen, die Eingabe-Überprüfung erst im onsubmit-Handler zu machen. Im serverseitigen Script, das die Eingaben entgegennimmt, natürlich sowieso.
So long,
Martin
--
Die letzten Worte des Architekten:
Mir fällt da gerade was ein...