jquery单击函数不使用if语句

时间:2015-01-12 01:34:48

标签: javascript jquery

$(function() {
  var passInput = document.getElementById("pass").value;
  $('#btn').click(function() {
    if (passInput === 1234) {
      alert("Correct");
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="passwordEntryDiv">
  <input id="pass" type="password">
  <button id="btn">Submit</button>
</div>

为什么这不起作用?这不是一个网站或任何我正在做的事情

3 个答案:

答案 0 :(得分:2)

passInput的值仅在代码运行时设置一次 - 它将永远不会在您提供的代码中更新。当用户单击该按钮时,它会将原始值与1234进行比较,而不是文本框中的当前值。将其放入点击处理程序中,以便在每次点击发生时获取新值。

$(function () {
  $('#btn').click(function() {
    var passInput = document.getElementById("pass").value;
    if (passInput === 1234) {
      alert("Correct");
    }
  });
});

答案 1 :(得分:1)

很简单,您在页面加载时存储输入的值。当用户输入数据时,该变量不会更新。所以它永远不会变成空字符串。

现在访问按钮单击内的值,您已更新值以验证

  $('#btn').click(function() {
    /* get value when click occurs*/
    var passInput = 1*$("#pass").val();
    if (passInput === 1234) {
      alert("Correct");
    }
  });

值也是字符串,因此如果针对数字进行测试,则需要将字符串转换为数字。有很多方法可以转换为数字。

答案 2 :(得分:-1)

它是一个输入字段,因此值为&#34; 1234&#34;不是1234。

变化: passInput === 1234

要: passInput === "1234"

此外,将值放在click事件中。

$("#btn").click(function () {
    if ($("#pass").val() === "1234") {
        alert("Correct");
});