我在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;
答案 0 :(得分:0)
在功能(isNaN(+price))
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'属性使您可以使用浮点数。