B. Gretges: onblur-/onchange-Geheimnisse

Hallo zusammen,

habe jetzt einige Zeit mit meinen Möglichkeiten und den Ergebnissen meiner Suche im Archiv herumexperimentiert, bislang leider ohne Erfolg.

Ich habe folgendes Problem:
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. Zur Zeit versuche ich dies wiefolgt zu realisieren:

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;  
    }  
}

Die Funktion rufe ich mittlerweile mit dem onchange-Event des input-Feldes auf. Davor habe ich es mit onblur versucht. 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. War das verständlich?

Danke schon einmal im Voraus und Grüße,
Bastian

  1. Hi,

    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? Wenn ich einen Eingabefehler in einem anderen Eingabefeld entdecke, den ich beheben möchte, dann möchte ich nicht mit Gewalt daran gehindert werden.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      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? Wenn ich einen Eingabefehler in einem anderen Eingabefeld entdecke, den ich beheben möchte, dann möchte ich nicht mit Gewalt daran gehindert werden.

      ich kann den Wunsch von B. Gretges durchaus nachvollziehen.
      Warum soll der Anwender in das zweite Kennwortfeld einen Wert eingeben dürfen (der ja mit dem Wert im ersten Feld übereinstimmen soll), wenn der Wert im ersten Feld schon unzulässig ist?
      Read from you
      Klaus

      1. Hi,

        Warum soll der Anwender in das zweite Kennwortfeld einen Wert eingeben dürfen (der ja mit dem Wert im ersten Feld übereinstimmen soll), wenn der Wert im ersten Feld schon unzulässig ist?

        Wenn es wirklich um die zweifache Eingabe eines Paßwortes geht, dann sollte diese Prüfung eher beim Fokussieren des zweiten Feldes geschehen als bei einer Änderung/Verlassen des ersten Feldes (denn onblur/onchange werden auch ausgelöst, wenn z.B. ein anderes Programm fokussiert wird).

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. 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...
    
  3. Hei Bastian,

    Ich würde das so verwirklichen, das der Button zum Abschicken einfach ausgegraut ist, mit der Meldung :'Ein oder mehrere Formularwerte sind nicht vollständig'. Den Test, ob vollständig, führst Du z.B. immer durch, wenn eine Maustaste gedrückt wird, während ein Textfeld den Fokus hat.

    Gruss, Nils

    1. Hi,

      Ich würde das so verwirklichen, das der Button zum Abschicken einfach ausgegraut ist,

      Halte _ich_ für Blödsinn.

      Den Test, ob vollständig, führst Du z.B. immer durch, wenn eine Maustaste gedrückt wird, während ein Textfeld den Fokus hat.

      Und wieso sollte sowas von einer _Maus_aktion abhängig gemacht werden?

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.