布尔值不变

时间:2018-08-11 03:01:35

标签: javascript jquery

我的JS代码:

var name_valid = false;
$("#InputName").blur( function(){
  if ($(this).val() != ""){
    name_valid = true;
  } else {
    name_valid = false;
  }
});
if (name_valid === true){
  alert('ok');
}
console.log(name_valid);

我实际上不理解为什么我的代码无法正常工作。
如果我的<input>不为空,则必须提醒(“确定”),但我什么也得不到。
为什么我的boolean值最后仍然是false

5 个答案:

答案 0 :(得分:1)

因为它是一个回调函数,仅在模糊函数完成后才执行。这意味着该行if (name_valid === true)在此行if ($(this).val() != "")之前执行。

尝试将您的代码更改为此:

var name_valid = false;
$("#InputName").blur( function(){
  if ($(this).val() != ""){
    name_valid = true;
  } else {
    name_valid = false;
  }

  if (name_valid === true){
     alert('ok');
   }
  console.log(name_valid);
});

答案 1 :(得分:1)

您犯了一个小错误,应该将最后一个if语句放入回调函数中,如下所示:

var name_valid = false;
$("#InputName").blur(function () {
    if ($(this).val() !== "") {
        name_valid = true;
    } else {
        name_valid = false;
    }
    if (name_valid === true) {
        alert('ok');
    }
    console.log(name_valid);
});

答案 2 :(得分:0)

您的条件式仅在页面加载时运行。您希望它在事件处理程序中,以便在实际触发事件时运行

var name_valid = false;
$("#InputName").blur(function() {

  if ($(this).val() != "") {
    name_valid = true;
  } else {
    name_valid = false;
  }

  if (name_valid === true) {
    alert('ok');
  }
  console.log(name_valid);

});

答案 3 :(得分:0)

var name_valid = false;
$("#InputName").blur( function(){
  if ($(this).val() !== ""){
    name_valid = true;
  }
  if (name_valid === true){
      alert('ok');
  }
  console.log(name_valid);
});

答案 4 :(得分:0)

请尝试这个。

$(document).ready(function () {
    var name_valid;
    $("input").blur(function () {
        if ($(this).val() != "") {
            name_valid = true;
        } else {
            name_valid = false;
        }
        if (name_valid) {
            alert('ok');
         }
    });
});