Ich versuche, ein Formular mit Javascript zu validieren. Hier ist mein Code

    <script type="text/javascript">
    function prevSubmit(){
        var oForm = document.forms[0];
        var pass1= oForm.elements["passwd"];
        var pass2=oForm.elements["repasswd"];
        var flag = 1;
        if (pass1.value.length>16) {
            document.getElementById("passError").innerHTML = "password may atleast 16 chars";
            flag = 0;
        }
        else
            document.getElementById("passError").innerHTML = "";

        if(pass1.value<=16 && pass1.value!=pass2.value)
        {
            document.getElementById("passError").innerHTML = "password must be same";
            flag = 0;
        }
        else
            document.getElementById("passError").innerHTML = "";
        return flag;
    }


</script>

Und hier ist mein Formularelement,

        <form id="registration_form" action="registration.php" method="post" onsubmit="return prevSubmit();">
        <p>
            <label>Name</label>
            <input type="text" name="name"/>
            <span id="NameError"></span>
        </p>
        <p>
            <label>Email</label>
            <input type="text" name="email"/>
            <span id="emailError"></span>
        </p>
        <p>
            <label>Password</label>
            <input type="password" name="passwd"/>
            <span id="passError"></span>
        </p>
        <p>
            <label>Repeat Password</label>
            <input type="password" name="repasswd"/>
        </p>            
            <input type="submit" class="button" value="sign up"/>

        </form>

Was ich versuche zu erreichen, ist das Passwort zu überprüfen, wenn keine Übereinstimmung oder größer als 16 ist, dann die Nachricht anzuzeigen und die Übermittlung zu verhindern, aber es funktioniert nicht. Warum?

-1
Tamim Addari 25 Nov. 2013 im 08:43

4 Antworten

Beste Antwort

Verwenden Sie true und false als Werte für flag, nicht 1 und 0. Sie müssen false zurückgeben, um die Übermittlung zu verhindern. Alles andere erlaubt die Übermittlung.

2
Barmar 25 Nov. 2013 im 04:45

Ich stimme den Antworten von Barmar und Epascarello zu.

Die if-Bedingungen sollten folgendermaßen implementiert werden:

var oForm = document.forms[0];
var pass1= oForm.elements["passwd"];
var pass2=oForm.elements["repasswd"];
var ctrlError = document.getElementById("passError");

if (pass1.value.length < 16) {
    ctrlError.innerHTML = "Password must be at least 16 characters long.";
    return false;
}
else if (pass1.value != pass2.value) {
    ctrlError.innerHTML = "Passwords do not match.";
    return false;
}
else {
    ctrlError.innerHTML = "";
    return true;
}
1
Usman Zafar 25 Nov. 2013 im 05:29

Nur "return false" von der Javascript-Methode

<input type="submit" class="button" value="sign up" onclick="javascript:return myFunc();"/>

function myFunc()
{
return false;
}

Dies ist ein grundlegendes Beispiel dafür, wie die Übermittlung von Formularen verhindert werden kann. Wenn wir false zurückgeben, verhindert die Browser- / Javascript-Engine die weitere Weitergabe des Klickereignisses und die Übermittlung wird verhindert.

0
A.T. 25 Nov. 2013 im 04:51

Zunächst macht diese Fehlermeldung keinen Sinn

password may atleast 16 chars

Zweitens ist Ihre zweite Fehlerprüfung falsch

if(pass1.value<=16 && pass1.value!=pass2.value)

Sie sagen, wenn der Wert kleiner ist, stimmen die Zahl 16 und die beiden Werte nicht überein.

Warum sollte der Wert kleiner als 16 sein? Der Scheck sollte einfach sein

if (pass1.value!=pass2.value)

Und wie die anderen vorgeschlagen haben, verwenden Sie wahr / falsch, nicht 1 und 0 als wahrheitsgemäße Werte.

1
epascarello 25 Nov. 2013 im 05:03