Book.js中的Node.js Bug

时间:2018-06-08 19:33:34

标签: javascript html node.js

我在node.js制作了一个图书系统。用户可以将书籍添加到数据库并搜索保存在数据库中的书籍。用户必须插入作者,流派,标题和价格。价格必须是一个数字,系统必须通知用户,以防他插入任何不同的东西。在我的情况下,系统根本不提醒用户,以防他用除了数字之外的任何其他东西提交价格。我应该改变什么?我的上一个功能有问题吗?



<fieldset>
  <legend>Register a book</legend>
  <form action="(My Url)" onsubmit="return ControlPrice" id="post" method="Post">
    Author:<br>
    <input type="text" name="author"><br>
    Title:<br>
    <input type="text" name="title"><br>
    Genre:<br>

    <select name="genre">
      <option value="Science fiction">Science fiction</option>
      <option value="Satire">Satire</option>
      <option value="Drama">Drama</option>
      <option value="Action and Adventure">Action and Adventure</option>
      <option value="Romance">Romance</option>
      <option value="Mystery">Mystery</option>
      <option value="Horror">Horror</option>
    </select>
    <br>
    Price:<br>
    <input type="text" name="price"><br><br>
    <input type="submit" id="submit" value="Submit"><br>
  </form>
</fieldset>
<br>
<fieldset>
  <legend> Search for a book by keyword</legend>
  <br>
  <form action="(MY URL)" method="GET">
    Search for a book:<br>
    <input type="text" name="keyword" <br="">
    <input type="submit" id="search" value="Search" <br="">
  </form>
  <script>
    function ControlPrice() {
      var form = document.getElementById("post");
      var price = form.price.value;
      if (isNaN(price)) {
        alert("Something went wrong! Price Input must be a number");
        return false;
      }
    }
  </script>
</fieldset>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:0)

在功能(isNaN(+price))

中更改if条件

form.price.value;返回一个字符串值。您需要先将其转换为数字格式,然后检查其是否为NaN

有很多方法可以将字符串转换为数字。

您也可以使用(isNaN(parseInt(price)))

答案 1 :(得分:0)

newline元素中,您有<form>。您需要通过添加一些parens onsubmit="return ControlPrice"

来实际执行该功能
()

您可能也不需要<form onsubmit="return ControlPrice()">

答案 2 :(得分:0)

使用以下命令更新脚本:

<script>
  function ControlPrice() {
    var form = document.getElementById("post");
    var price = form.price.value;
    if (isNaN(parseInt(price))){
      alert("Something went wrong! Price Input must be a number");
      return false;
    }
  }
</script>

答案 3 :(得分:0)

尝试了解有关HTML表单的更多信息,例如,如果您只需要字段/数字,则应该可以在不使用JavaScript的情况下执行此操作。

示例:<input type="number" name="price" required step="0.01">

定义类型'数字',仅将输入限制为数字字符。

如果字段为空,则设置'required'属性将阻止提交表单。

'step'属性使您可以使用浮点数。