Jquery进行实时输入检查

时间:2010-08-30 22:03:48

标签: jquery validation forms jquery-traversing

我正在尝试编写一个验证用户输入的脚本。喜欢:字母长度超过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 个答案:

答案 0 :(得分:2)

您可以在处理程序中使用$(this)来引用发生keyup事件的元素。此外,您可以使用.next()<a>移动到您正在设置文本的$('#register input').keyup(function(){ $(this).next().text($(this).val().length < 5 ? "Please fill" : ""); }); ,如下所示:

{{1}}

答案 1 :(得分:0)

作为一般规则,如果您想获取特定事件,而不是全部获取并进行自己的过滤,则应使用特定事件绑定。 (如果你想以另一种方式去做,你需要查看either this, $(this) or the event,视情况而定。)

但是,对于表单验证,已有代码可以执行此操作。例如,the jQuery Validation plugin用于常规表单验证,extension specifically for passwords。在你的鞋子里,我至少从其中一个开始,而不是从头开始构建东西。