我是JavaScript的新手,我想在注册表格上进行用户名验证。我不知道我的代码有什么问题,但是我认为“ IF ELSE”语句有问题。
=IF(AZ>1,"2","1")
我希望当我输入超过5个字符直到20个字符时,usernameErrorMsg将会消失。实际结果,无论我输入了多少个字符,错误消息都会不断出现。
答案 0 :(得分:3)
count
仅在usernameLength
运行之前被计算一次。您应该每次在回调中重新计算其值;否则,对该值的更改将在回调内部不可见。
此外,如果要检查输入中测试的长度,则需要检查checkUser()
,而不是$("#username").val().length
:
$("#username").length
答案 1 :(得分:1)
$("#username").length
不是该字段中字符的长度。它是查询返回的JQuery包装集中的元素数量。由于只有一个元素的id
为username
,因此长度始终为1
,而您的if
条件始终为true
。
您要做的是在字段中获取 值 的长度:
$("#username").val().length
您还希望将获取值的行移至focusout
事件处理程序中,以便始终使用最新数据。
最后,让一个函数什么都不做,只调用另一个函数没有多大意义,因此您可以将checkUser
函数与事件回调结合起来并简化代码。
$(document).ready(function() {
$("#usernameErrorMsg").hide();
var username = $("#username"); // Find the element just once
$("#username").focusout(function() {
// Each time the user leaves the field, get the current
// amount of characters in the input field
var usernameLength = username.val().length;
// See the difference between the length of the JQuery query and
// the length of the value of the first element in the results?
console.log(username.length, usernameLength);
if (usernameLength < 5 || usernameLength > 20) {
$("#usernameErrorMsg").show();
} else {
$("#usernameErrorMsg").hide();
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Enter your name: <input id="username">
<span id="usernameErrorMsg">ERROR</span>
答案 2 :(得分:0)
每次函数检查时,您都需要获取length
中的input
。
当前您只计算一次length
。
$(document).ready(function(){
$("#usernameErrorMsg").hide();
$("#username").focusout(function(){
checkUser();
});
function checkUser(){
//calculate the length everytime in the function
var usernameLength = $("#username").val().length;
if(usernameLength < 5 || usernameLength > 20){
$("#usernameErrorMsg").show();
}
else{
$("#usernameErrorMsg").hide();
}
}
答案 3 :(得分:-2)
尝试
$(document).ready(function(){
$("#usernameErrorMsg").hide();
$("#username").focusout(function(){
checkUser();
});
function checkUser(){
usernameLength = $("#username").length;
if(usernameLength < 5 || usernameLength > 20){
$("#usernameErrorMsg").show();
}
else{
$("#usernameErrorMsg").hide();
}
}
});