2017-08-07 1 views
0

Ich versuche, die Farbe einer Passwortbestätigungseingabe zu ändern, wenn der Benutzer darin eingibt. Wenn es übereinstimmt, wird der Rand grün, wenn nicht, wird er rot. HierWie würde ich die Klasse einer Eingabe ändern, wenn der Benutzer eingibt?

ist die JQuery:

var createPass = $("#createPass").val(); 
var confirmPass = $("#confirmPass").val(); 

$("#confirmPass").keydown(function() { 

    if(confirmPass == createPass && confirmPass != "") { 
     confirmPass.addClass("inputCorrect") 
    } else { 
     confirmPass.addClass("inputIncorect"); 
    } 
}); 

Die html:

<label for="passWord">Create Password</label> 
<input type="password" id="createPass" name="passWord" class="inputBox" placeholder="Minimum 8 characters" required><br> 

<label>Confirm Password</label> 
<input type="password" id="confirmPass" class="inputBox" required> 

Und die CSS:

input.passCorrect { 
    border: 1px solid #00cc00; 
} 

input.passIncorrect { 
    border: 1px solid #ff0000; 
} 

Ich habe auch versucht, die folgende JQuery ersten, aber es schien, ein bisschen lang für den Job:

$("input[id=confirmPass").keyup(function() { 

    if ($("input[id=confirmPass]").val() == $("input[id=createPass]").val()) { 

     ($("input[id=confirmPass]").removeClass("passIncorrect")); 
     ($("input[id=confirmPass]").addClass("passCorrect")); 

    } 

    if ($("input[id=confirmPass]").val() != $("input[id=createPass]").val() && ($("input[id=confirmPass]") != "")) { 

     ($("input[id=confirmPass]").removeClass("passCorrect")); 
     ($("input[id=confirmPass]").addClass("passIncorrect")); 

    } 

}); 

Ich habe versucht mit .keyup(), .keydown(), .keypress(), .change(), und habe fast jede Klasse, ID und Variable umbenannt, aber ich hatte keinen Erfolg! Es ist in einer separaten .js Datei, und ich habe es mit und ohne $(document).ready() versucht und es funktioniert nicht. Ich habe auch versucht, .css() im Gegensatz zu .addClass und .removeClass zu verwenden.

Jede Hilfe würde sehr geschätzt werden!

+0

Sollten Sie nicht jedes Mal den "confirmPass" -Wert erhalten, wenn eine Taste in Ihrem ersten Beispiel gedrückt wird, um die tatsächliche zu erhalten? –

+0

versuchen Sie mit OnInput-Ereignis –

+0

Vorschläge: 1) Sie falsch geschrieben "falsch" in "addClass". 2) Wenn Sie Hilfe dazu benötigen, würde ich empfehlen, ein JSFiddle oder ähnliches zu erstellen. –

Antwort

1

Hier ist die feste Javascript, die es funktioniert werden:

var createPass = $("#createPass"); 
var confirmPass = $("#confirmPass"); 

confirmPass.keydown(function() { 
    // Remove both classes 
    confirmPass.removeClass("passCorrect passIncorrect"); 

    // Add the appropriate class 
    if (confirmPass.val() == createPass.val() && confirmPass.val() != "") { 
     confirmPass.addClass("passCorrect"); 
    } else { 
     confirmPass.addClass("passIncorrect"); 
    } 
}); 

Hier sind die Dinge, die nicht vorher gearbeitet hatten:

  • Wenn die Ausführung von Code confirmPass.addClass("inputCorrect"), fügen Sie eine Klasse zu einem ganzzahligen Wert.
  • In Ihrem Javascript haben Sie die Klassen 'inputCorrect' und 'inputIncorrect' hinzugefügt, aber in Ihrem CSS verweisen Sie auf die Klassen 'passCorrect' und 'passIncorrect'.
  • Sie müssen den Wert von createPass und confirmPass jedes Mal abrufen, wenn der Benutzer eine Taste drückt, sonst enthalten die beiden Variablen, die Sie am Anfang deklarieren, immer den Anfangswert der beiden Eingaben.
  • Sie müssen die Klasse der Eingabe jedes Mal entfernen, wenn der Benutzer eine Taste drückt, sonst werden beide Klassen auf die Eingabe angewendet.
+1

Fast. Sie müssen die Klasse 'passIncorrect' entfernen, bevor Sie 'passCorrect' hinzufügen. Es ist eigentlich eine gute Idee, die Klasse 'passIncorrect' für jeden Zyklus zu entfernen und sie erneut hinzuzufügen, wenn die Bedingungen erfüllt sind. – Gerard

+0

Vielen Dank für das Aufzeigen! Just fixed es :) –

+1

Danke Asher! Es funktioniert nicht auf meiner Website, aber es macht genau das, was ich will in der Geige. Ich denke, es könnte etwas anderes falsch sein, da auch keine einfachen Tests mit JavaScript oder JQuery funktionieren. Ich muss etwas tiefer graben, aber ich werde dieses Snippet definitiv verwenden, sobald alles behoben ist. –

Verwandte Themen