Jquery выполняет проверку ввода в реальном времени
-
25-09-2019 - |
Вопрос
Я пытаюсь написать сценарий, который проверяет ввод пользователя.Нравиться:длина буквы более 5 или пароль и повторно вводимый пароль совпадают.Но как узнать, какое поле ввода в форме было нажато?я использовал
$(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("");
}
});
});
И
Новое имя пользователя
<label for="password">Password</label> <input type="password" id="password" name="password"><a class="password"></a>
</fieldset>
</form>
Когда я нажимаю один из элементов ввода, код запускается и видит, что второй ввод пароля также не является полным полем и вторым. <a>
тег также срабатывает.Должен ли я использовать несколько .keyup
функции для каждого элемента, или есть ли способ узнать, какой элемент щелкнули?Нравиться
if (clicked == $("input#username") && $('#username').val().length < 5) {
$('a.username').text("Please fill");
} else {
$('a.username').text("Please fill");
}
но это не работает.Я думаю, должно быть что-то подобное.
Решение
Вы можете использовать $(this)
внутри обработчика для ссылки на элемент keyup
событие произошло .Кроме того, вы можете использовать .next()
перейти от него к <a>
вы устанавливаете текст, например:
$('#register input').keyup(function(){
$(this).next().text($(this).val().length < 5 ? "Please fill" : "");
});
Другие советы
Как правило, вам следует использовать конкретную привязку событий, если вы хотите получить определенные события, а не получать их все и выполнять собственную фильтрацию.(Если бы вы хотели сделать это по-другому, вам бы хотелось посмотреть на или this
, $(this)
или событие, в зависимости.)
Однако для проверки формы уже есть код.Например, плагин проверки jQuery для общей проверки формы и расширение специально для паролей.На вашем месте я бы, по крайней мере, начал с одного из них, а не создавал что-то с нуля.