Jquery realiza comprobaciones de entrada en tiempo real
-
25-09-2019 - |
Pregunta
Estoy intentando escribir un script que valide la entrada del usuario.Como:longitud de letra superior a 5 o contraseña y contraseña reingresada coincidentes.Pero, ¿cómo puedo saber en qué cuadro de entrada del formulario se hizo clic?solía
$(function() {
$('#register input').keyup(function() {
if ($('#username').val().length < 5) {
$('a.username').text("Please fill");
} else {
$('a.username').text("");
}
if ($('#password').val().length < 5) {
$('a.password').text("asdasd");
} else {
$('a.password').text("");
}
});
});
Y
Nombre de usuario de nuevo usuario
<label for="password">Password</label> <input type="password" id="password" name="password"><a class="password"></a>
</fieldset>
</form>
Cuando hago clic en uno de los elementos de entrada, el código se ejecuta y ve que la segunda entrada de contraseña tampoco está completa y la segunda <a>
La etiqueta también se activa.¿Debo usar varios? .keyup
funciones para cada elemento, o ¿hay algún método para hacer clic en qué elemento?Como
if (clicked == $("input#username") && $('#username').val().length < 5) {
$('a.username').text("Please fill");
} else {
$('a.username').text("Please fill");
}
Pero esto no funciona.Creo que debería haber algo similar.
Solución
Puedes usar $(this)
dentro del controlador para referirse al elemento que keyup
el evento ocurrió el.Además, puedes utilizar .next()
para pasar de ella a la <a>
estás configurando el texto de, así:
$('#register input').keyup(function(){
$(this).next().text($(this).val().length < 5 ? "Please fill" : "");
});
Otros consejos
Como regla general, debe utilizar el enlace de eventos específicos si desea obtener eventos específicos, en lugar de obtenerlos todos y realizar su propio filtrado.(Si quisieras hacerlo de otra manera, querrás mirar cualquiera this
, $(this)
o el evento, dependiendo.)
Sin embargo, para la validación del formulario, ya existe un código para hacerlo.Por ejemplo, el complemento de validación jQuery para la validación de formularios generales, y un extensión específica para contraseñas.En tu lugar, al menos comenzaría con uno de esos en lugar de construir cosas desde cero.