三元运算符数字检查不起作用

问题描述 投票:0回答:1

我正在使用三元运算符来检查用户输入是否是数字。但是,当我按下复选按钮时,无论输入数字还是字母,都会显示“请输入数字”的警报。这是我的代码。

<label style = "font-size:40px">Please Enter A Number Here: </label><input type = "text" id = "num" style = "font-size:40px">
        <button type = "button" onclick = "check()">Check</button>
        <script>
        function check() { 
        var input = document.getElementById("num");
        var check = /^[0-9]*$/;
        (!check.test(input)) ? window.alert("You have only entered numeric characters! Please proceed to press one of the other buttons.") : window.alert("Please enter only numbers!")
        }
        </script>
javascript regex ternary-operator
1个回答
0
投票

但是,当我按下复选按钮时,无论输入数字还是字母,都会出现“请输入数字”的提示

这是不正确的。如果我们运行带有数字输入的代码(检查下面的代码片段),它将显示:

您只输入了数字字符!请继续按其他按钮之一。

这是真的。但是,对于字母输入,它也会显示相同的消息:

您只输入了数字字符!请继续按其他按钮之一。

这是错误的。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num");
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

要解决此问题,我们应该首先

console.log()
(检查下面的代码片段)
input
,因为这是我们要检查的:

<input type="text" id="num" style="font-size: 40px"></input>

输出是

<input>
元素的类型和属性,但我们想要捕获
input
的值。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num");
      console.log(input);
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

要捕获该值,我们可以这样做:

var input = document.getElementById("num").value;

因此,当我们再次

console.log()
(检查下面的片段)
input
时,我们将得到我们想要的:

12345

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num").value;
      console.log(input);
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

但是,代码(检查下面的代码片段)现在表现出意外。输入数字会显示:

请仅输入数字!

输入字母后会显示:

您只输入了数字字符!请继续按其他按钮之一。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num").value;
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

行为在某种程度上被逆转了。这就是为什么我们需要删除逻辑 NOT 运算符:

check.test(input)

现在,代码(检查下面的代码片段)可以按预期工作。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num").value;
      var check = /^[0-9]*$/;

      check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

© www.soinside.com 2019 - 2024. All rights reserved.