Sto tentando di creare uno di quei moduli di nuova password standard, in cui digiti la nuova password una volta e poi una seconda volta per confermare. Vorrei in modo che una volta che si sfocatura lontano da questi campi, se non corrispondono, sia saranno contrassegnati non validi, come nel seguente scenario:HTML5/JS/jQuery: in caso di input non valido, contrassegna un elemento diverso (arbitrario) come non valido
- L'utente inserisce la password
abc
in#newpassword1
. - Schede utente su
#newpassword2
. - L'utente immette la password
def
in#newpassword2
. - Schede utente assenti.
- La convalida rileva una mancata corrispondenza e contrassegna entrambi i valori
#newpassword1
e#newpassword2
come non validi.
So che posso segnare il bersaglio di un evento come non validi utilizzando e.target.setCustomValidity(...)
, ma non capisco modello di eventi di JavaScript molto bene e non riesco a capire come contrassegnare un diverso elementocome non valido in base alla propria invalidità del target dell'evento.
Questo è il relativo estratto di codice (non funzionante) che sto cercando di utilizzare:
if ($('#newpassword1').val() != $('#newpassword2').val()) {
errorMessage = "The new passwords you've entered don't match.";
$('#newpassword1, #newpassword2').setCustomValidity(errorMessage);
}
Questo sembra che dovrebbe funzionare, in modo intuitivo, ma ovviamente non è così. L'errore è semplicemente TypeError: $(...).setCustomValidity is not a function
.
Si prega di notare: Non sto chiedendo come aggiungere un anello rosso o qualsiasi altra cosa a un campo, voglio che in realtà essere validi (come in, avere il suo ritorno validity.valid
proprietà false
).
È possibile farlo?
Grazie!
credo che 'setCustomValidity' deve essere utilizzato contro un oggetto HTML nativo, e non un oggetto jQuery, provare' .get() setCustomValidity. (ErrorMessage) ' – Ohgodwhy
Credo' $ ('# newpassword1, # newpassword2 ') [0] .setCustomValidity (errorMessage); 'funzionerà anche – tymeJV
Grazie a tutti e due! – kine