0

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

​</p>

当我单击其中一个输入元素时,代码会运行,它会看到第二个密码输入也不是完整的字段,并且第二个<a>标签也会触发。我应该.keyup为每个元素使用几个函数,还是有什么方法可以让点击哪个元素?像

if (clicked == $("input#username") && $('#username').val().length < 5) {
    $('a.username').text("Please fill");

} else {
    $('a.username').text("Please fill");

}​

但这不起作用。我认为应该有类似的东西。

4

2 回答 2

2

您可以$(this)在处理程序内部使用来引用keyup发生事件的元素。此外,您可以使用.next()从它移动到<a>您正在设置的文本,如下所示:

$('#register input').keyup(function(){
  $(this).next().text($(this).val().length < 5 ? "Please fill" : "");
});
于 2010-08-31T00:16:13.223 回答
0

作为一般规则,如果要获取特定事件,则应使用特定事件绑定,而不是获取所有事件并进行自己的过滤。(如果您想以另一种方式进行操作,则需要查看或event this$(this)具体取决于。)

但是,对于表单验证,已经有代码可以做到这一点。例如,用于一般表单验证的 jQuery Validation 插件,以及专门用于密码的扩展。在你看来,我至少会从其中一个开始,而不是从头开始构建东西。

于 2010-08-30T22:16:19.137 回答