JQuery делает проверку ввода в реальном времени - PullRequest
0 голосов
/ 31 августа 2010

Я пытаюсь написать скрипт, который проверяет пользовательский ввод.Например: длина буквы более 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");

}​

, но это не работает.Я думаю, что должно быть что-то подобное.

Ответы [ 2 ]

2 голосов
/ 31 августа 2010

Вы можете использовать $(this) внутри обработчика для ссылки на элемент, с которым произошло событие keyup. Кроме того, вы можете использовать .next() для перехода от него к <a>, для которого вы устанавливаете текст, например:

$('#register input').keyup(function(){
  $(this).next().text($(this).val().length < 5 ? "Please fill" : "");
});
0 голосов
/ 31 августа 2010

Как правило, вы должны использовать привязку определенных событий, если вы хотите получать определенные события, а не получать их все и выполнять свою собственную фильтрацию.(Если вы хотите сделать это по-другому, вам нужно посмотреть или this, $(this) или событие , в зависимости.)

Однако для проверки формыуже есть код для этого.Например, плагин jQuery Validation для проверки общей формы и расширение специально для паролей .На твоем месте я бы, по крайней мере, начал с одного из них, а не с нуля.

...