我是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();
  }
}

09-25 17:09