Ich versuche, eines dieser neuen Standard-Passwort Formen zu erstellen, wo Sie das neue Passwort einmal eingeben und dann ein zweites Mal zu bestätigen. Ich möchte es so, dass wenn Sie aus diesen Bereichen verschwimmen weg, wenn sie nicht übereinstimmen, beide wird als ungültig markiert werden, wie in dem folgenden Szenario:HTML5/JS/jQuery: Bei ungültiger Eingabe, markieren Sie ein anderes (beliebiges) Element als ungültig
- Benutzer gibt Passwort
abc
in#newpassword1
. - Benutzerregisterkarten zu
#newpassword2
. - Der Benutzer gibt das Passwort
def
in ein. - Benutzerregisterkarten entfernt.
- Die Überprüfung erkennt eine Nichtübereinstimmung und markiert sowohl
#newpassword1
als auch als ungültig.
Ich weiß, dass ich das Ziel eines Ereignisses durch Verwendung e.target.setCustomValidity(...)
als ungültig markieren können, aber ich verstehe nicht von JavaScript-Event-Modell sehr gut und kann nicht herausfinden, wie man ein verschiedenes Element als ungültig markieren basierend auf der eigenen Invalidität des Ereignisziels.
Dies ist der relevante Auszug aus (ohne Funktion) Code, den ich zu verwenden Ich versuche:
if ($('#newpassword1').val() != $('#newpassword2').val()) {
errorMessage = "The new passwords you've entered don't match.";
$('#newpassword1, #newpassword2').setCustomValidity(errorMessage);
}
Dies scheint, wie es funktionieren soll, intuitiv, aber natürlich ist es nicht. Der Fehler ist einfach TypeError: $(...).setCustomValidity is not a function
.
Bitte beachten Sie: Ich bin nicht zu fragen, wie einen roten Ring oder was auch immer auf ein Feld hinzuzufügen, ich will es eigentlich sein ungültig (wie in, haben seine validity.valid
Wohnung zurück false
).
Ist es möglich, dies zu tun?
Danke!
Ich glaube, dass 'setCustomValidity' gegen einen nativen HTML-Objekt verwendet werden muss, und nicht ein jQuery-Objekt, versuchen' .get(). SetCustomValidity (errormessage) ' – Ohgodwhy
I' $ glauben ('# newpassword1, # newpassword2 ') [0] .setCustomValidity (errorMessage); 'wird auch funktionieren – tymeJV
Danke an euch beide! – kine