我正在尝试编写一个验证用户输入的脚本。喜欢:字母长度超过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");
}
但这不起作用。我认为应该有类似的东西。
答案 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。在你的鞋子里,我至少从其中一个开始,而不是从头开始构建东西。