我是JavaScript的新手,我想在注册表格上进行用户名验证。我不知道我的代码有什么问题,但是我认为“ IF ELSE”语句有问题。
$(document).ready(function() {
$("#usernameErrorMsg").hide();
var usernameLength = $("#username").length;
$("#username").focusout(function() {
checkUser();
});
function checkUser() {
if (usernameLength < 5 || usernameLength > 20) {
$("#usernameErrorMsg").show();
} else {
$("#usernameErrorMsg").hide();
}
}
});
我希望当我输入超过5个字符直到20个字符时,usernameErrorMsg会消失。实际结果,无论我输入了多少个字符,错误消息都会不断出现。
最佳答案
在运行usernameLength
之前,仅计算一次checkUser()
。您应该每次在回调中重新计算其值;否则,对该值的更改将在回调内部不可见。
此外,如果要在输入中检查测试的长度,则需要检查$("#username").val().length
,而不是$("#username").length
:
function checkUser(){
var usernameLength = $("#username").val().length;
if (usernameLength < 5 || usernameLength > 20){
$("#usernameErrorMsg").show();
} else {
$("#usernameErrorMsg").hide();
}
}