tkzetel: Passwortfelder vergleichen

Hallo,

Heute könnte ich mal wieder einen Tipp gebrauchen. Ich möchte mit JavaScript einen Passwortvergleich machen. Ich prüfe auch ob die Felder leer sind oder ob es sich z.B. um eine Emailadresse handelt mit JavaScript, das läuft auch soweit ganz gut. Jetzt geht es darum die Eingabefelder zu vergleichen z.B. für die Emailadresse die den Namen GEMAIL und GEMAIL2 haben. Ich habe den zwei Feldern schon die id M1 und M2 zugewiesen, konnte man bei Netobjects einstellen.

Ich habe mir eine Javaanleitung für die Programmierung aus dem Internet besorgt und obwohl ich es genau so eingeben habe, klappt der Passwortvergleich nicht. Die anderen Sachen klappen halt wunderbar nur der Vergleich nicht.

So rufe ich das JavaScript auf

<form name="GESCHAEFTSKUNDENERFASSUNG" action="geschaeftskundenerfassung.php" onsubmit="return chkFormular();" method="post">

So sieht eine Zeile z.B. aus, die von Netobjects erstellt wird.

<p style="margin-bottom: 0px;"><input type="text" id="M1" name="GEMAIL" size="60" maxlength="46" style="width: 476px; white-space: pre;">&nbsp;</p>

<script type="text/javascript">
function chkFormular (){
   if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.value ==""){
   alert("Bitte die E-Mail eingeben");
   document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.focus();
   return false;
   }
   if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.value ==""){
   alert("Bitte die E-Mail eingeben");
   document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.focus();
   return false;
   }
   if (document.GESCHAEFTSKUNDENERFASSUNG.GPASSWORT.value ==""){
   alert("Bitte das Passwort eingeben");
   document.GESCHAEFTSKUNDENERFASSUNG.GPASSWORT.focus();
   return false;
   }
   if (document.GESCHAEFTSKUNDENERFASSUNG.GPASSWORT2.value ==""){
   alert("Bitte das Passwort eingeben");
   document.GESCHAEFTSKUNDENERFASSUNG.GPASSWORT2.focus();
   return false;
   }
   if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.indexOF("@") == -1){
   alert("Bitte eine korrekte E-Mailadresse eingeben");
   document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.focus();
   return false;
   }
   if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.indexOF("@") == -1){
   alert("Bitte eine korrekte E-Mailadresse eingeben");
   document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.focus();
   return false;
   }

if (document.getElementById("M1").value != document.getElementById("M2").value){
             alert("Die E-Mailadresse stimmt nich überein. Bitte neu eingeben")
             document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.focus();
             return false;
 }

}
</script>

Ich weiß nicht wo der Fehler steck für eine Hilfe wäre ich sehr dankbar.

Bis dahin vielen Dank

Thomas

Ich habe auch schon folgendes probiert:

if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.value !=  document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.value) {
alert("Die E-Mailadresse stimmt nich überein. Bitte neu eingeben")
document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.focus();
return false;
}

  1. Hallo,

    Ich habe mir eine Javaanleitung für die Programmierung aus dem Internet besorgt ...

    dabei wäre Javascript wohl passender gewesen, weil das hier mit Java nichts zu tun hat. ;-)

    obwohl ich es genau so eingeben habe, klappt der Passwortvergleich nicht. Die anderen Sachen klappen halt wunderbar nur der Vergleich nicht.

    "Klappt nicht" ist keine Fehlerbeschreibung. Was du erreichen möchtest, ist mir schon klar, aber wichtig wäre zu wissen, was *tatsächlich* passiert. Wichtig wäre zum Beispiel, welche Fehler gemeldet werden. Mit dieser Nichtinformation kann ich höchstens den Code durchsehen und offensichtliche Fehler herausstellen.
    Apropos Code: Warum schreist du hier so? Durchgehende Großschreibung ist *sehr* unüblich, nicht zuletzt deshalb, weil die Lesbarkeit darunter leidet.

    <p style="margin-bottom: 0px;"><input type="text" id="M1" name="GEMAIL" size="60" maxlength="46" style="width: 476px; white-space: pre;">&nbsp;</p>

    Die CSS-Eigenschaft white-space auf ein einzeiliges Eingabefeld anzuwenden, ist ziemlich sinnlos. Ebenso sinnlos wie das geschützte Leerzeichen hinter dem Eingabefeld.

    if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.indexOF("@") == -1)

    Bisher wusstest du noch, dass man den eingegebenen Text über die Eigenschaft "value" erhält - hier willst du plötzlich die Methode indexOf() direkt auf das Elementobjekt anwenden. Ganz abgesehen davon, dass die Methode indexOf heißt und nicht indexOF. Hier muss die Javascript-Engine also die Bearbeitung abbrechen und die Fehlermeldung bringen, dass die Methode indexOF() nicht existiert.

    if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.indexOF("@") == -1)

    Dasselbe in Grün.

    if (document.getElementById("M1").value != document.getElementById("M2").value){
                 alert("Die E-Mailadresse stimmt nich überein. Bitte neu eingeben")
                 document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.focus();
                 return false;
    }

    Gibt es einen Grund, warum du bisher über Formular- und Feldnamen auf die Elemente zugegriffen hast, und jetzt plötzlich über die ID?

    Ich habe auch schon folgendes probiert:

    if (document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL.value !=  document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.value) {
    alert("Die E-Mailadresse stimmt nich überein. Bitte neu eingeben")
    document.GESCHAEFTSKUNDENERFASSUNG.GEMAIL2.focus();
    return false;
    }

    Das würde von der Logik her zur restlichen Überprüfung weiter oben passen und könnte auch funktionieren - wenn das Script nicht schon vorher abgebrochen würde.

    So long,
     Martin

    --
    Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
    Die Zivilisation hatte begonnen.