【问题标题】:Validation of float and not empty in JavaScript在 JavaScript 中验证浮点和非空
【发布时间】:2020-07-23 23:28:31
【问题描述】:

我是 Web 开发领域的新手,我从基本应用程序开始。我正在制作一个简单的网页来添加两个数字,并尝试执行一些基本验证,即输入字段不能为空以及输入只能是浮点数。

我的 index.html:

<!doctype html>
<html lang="en">
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="styles.css">
    <link href="https://fonts.googleapis.com/css2?family=Merriweather&display=swap" rel="stylesheet">
    <title>Add Two Numbers</title>
</head>
<body>
    <form class="container center_div topSpacing">
        <h1 id="Title" class="text-center">Add Two Numbers</h1> 
        <div class="form-group">
        <label for="Num1">First Number</label>
        <input type="text" class="form-control" id="Num1" placeholder="Enter First Number">
        </div>
        <div class="form-group">
        <label for="Num2">Second Number</label>
        <input type="text" class="form-control" id="Num2" placeholder="Enter Second Number">
        </div>
        <div class="text-center">
            <button onclick="result()" type="button" class="btn btn-outline-success">Evaluate</button>
        </div>
    </form>
    <br>

    <h1 id="Title2" class="text-center"></h1>

    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
    <script type="text/javascript" src="index.js"></script>
</body>
</html>

我的 index.js:

let var1 = document.getElementById("Num1");
let var2 = document.getElementById("Num2");
function validate() {
    if(var1 == "" || var2 == "")
        return false;
    return true;
}

function buttonClick() {
    let sum = parseFloat(var1.value) + parseFloat(var2.value);
    return sum;
}

function result() {
    if(validate()) {
        document.getElementById("Title2").innerHTML = "Sum is: " + buttonClick();
    } else {
        window.alert("Wrong Inputs");
    }
}

JavaScript 代码没有执行验证和求和。

【问题讨论】:

  • var1var2 是对元素的引用,如果这些元素存在,则始终传递 if

标签: javascript html css web bootstrap-4


【解决方案1】:

解决方案的简单修复是使输入字段输入数字。

 <input type="number" class="form-control" id="Num1" placeholder="Enter First Number">
        </div>

 <input
          type="number"
          class="form-control"
          id="Num2"
          placeholder="Enter Second Number"
        />

如下修改验证函数

 function validate() {
  const reg = /\-?\d+\.\d+/g;
  if (
    var1.value !== "" &&
    var2.value !== "" &&
    var1.value.match(reg) &&
    var2.value.match(reg)
  ) {
    return true;
  }
  return false;
}

【讨论】:

    【解决方案2】:

    改变这个

    function validate() {
    if(var1 == "" || var2 == "")
        return false;
    return true;
    

    }

    function validate() {
    if(var1.value == "" || var2.value == "")
        return false;
    else
        return true;
    }
    

    这应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 2013-06-22
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多