【发布时间】:2019-04-29 01:51:37
【问题描述】:
我正在尝试创建两个数字的比较/验证,以便从数据库中检索正确的数字。
我正在使用 PHP、HTML 并从 XAMPP 数据库中检索重量的详细信息以与用户输入进行比较。
我正在使用type='number',因此用户只能输入数字。
HTML 表单
<form action="" method="POST" onSubmit= "return Validator_edit(this)">
<table class="midTable" align="center" cellpadding="3" cellspacing="3" enctype="multipart/form-data" >
<tr>
<tr>
<th align="right" >Weight:</th>
<td><input type="number" size="20" name="weight" id="weight" value="<?php echo $weight ?>" disabled="disabled"> * Weight that you have set previously <br/></td>
</tr>
<tr>
<th align="right" >Progress:</th>
<td><input type="number" name="progress" value="<?php echo $progress ?>" id="progress" >
* NOTE : Progress must NOT exceed the weight you have set .</strong><br></h3></td>
</tr>
<tr >
<td colspan='2' align='center'><input type="submit" value="update" name="submit" />
</tr>
</table>
</form>
验证表格
<script type="text/javascript" language="javascript">
function Validator_edit(frm){
if (frm.progress.value=="")
{
alert("progess must not be empty");
frm.progress.focus();
return false;
}
if (frm.progress.value > frm.weight.value )
{
alert(" You have exceed the weight.");
frm.progress.focus();
return false;
}
}
</script>
由于某种原因,它能够验证“一些”数字。例如:我已经设置:
Weight = 50
逻辑上进度低于 50 将能够被验证并返回 true。
但是,它在 3、4、5、6、7、8、9 上失败,即使这些数字小于 50。
我该如何解决这个问题?
【问题讨论】:
-
为了帮助调试它,请使用您的控制台:添加
console.log(frm.progress.value);和console.log(frm.weight.value);作为您的Validator_edit函数的第一行。 -
我已经尝试过@TimMorton 的建议。该功能能够从数据库和表单上的用户输入中检索权重。但是比较并没有真正起作用。
-
我不记得 javascript 是否会轻易告诉您它是什么类型的变量:字符串/浮点数/整数。可能它将它作为字符串而不是数字进行比较。如果是这样,您需要将类型更改为浮点数或整数。我不记得方法是什么了。但它会像
parseFloat(frm.progress.value) > parseFloat(frm.weight.value) -
解决了。非常感谢@TimMorton
标签: javascript php html forms