Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用JavaScript约束HTML表单——数字问题_Javascript_Html_Forms - Fatal编程技术网

用JavaScript约束HTML表单——数字问题

用JavaScript约束HTML表单——数字问题,javascript,html,forms,Javascript,Html,Forms,我正在写一份表格,要求输入重量范围的下限和上限,并返回重量范围内的物品。为了防止用户输入下限>上限(例如下限=5和上限=2),我使用了下面的javascript。 测试时,当上限和下限均小于10时,表单将生成预期结果。 但是,当我尝试时,它返回“下限大于上限”错误消息 下=2/上=10或下=9/上=10 此外,当我尝试lower=2和upper=30时,它会再次工作。(我正在使用Chrome进行测试) 似乎它只是比较上下输入的第一个数字。 不确定这是否是由不正确的输入类型或Javascript引

我正在写一份表格,要求输入重量范围的下限和上限,并返回重量范围内的物品。为了防止用户输入下限>上限(例如下限=5和上限=2),我使用了下面的javascript。 测试时,当上限和下限均小于10时,表单将生成预期结果。
但是,当我尝试时,它返回“下限大于上限”错误消息 下=2/上=10或下=9/上=10
此外,当我尝试lower=2和upper=30时,它会再次工作。(我正在使用Chrome进行测试) 似乎它只是比较上下输入的第一个数字。 不确定这是否是由不正确的输入类型或Javascript引起的。有人能帮忙解决这个问题吗? 谢谢

HTML5格式:

<label>Please enter lower limit: <input type="number" name="weightl" 
step="0.00000000001" min="0" id="weightl" autofocus required   
placeholder="Accepts decimal places"/></label>

<label>Please enter upper limit:<input type="number" name="weightu"
step="0.00000000001" min="0" id="weightu" autofocus required 
placeholder="Accepts decimal places"/></label>

<input type="submit" value="submit"/>
<input type="reset" value="Reset">
请输入下限:
请输入上限:
JAVASCRIPT:

 <script type="text/javascript">
window.onload = function () {
document.getElementById("weightl").onchange = validateWeight;
document.getElementById("weightu").onchange = validateWeight;
}
function validateWeight(){
var up=document.getElementById("weightu").value;
var low=document.getElementById("weightl").value;

if(low>up)
document.getElementById("weightu").setCustomValidity("Upper limit has to be equal or greater than lower limit");
else
document.getElementById("weightu").setCustomValidity('');  
}
</script>

window.onload=函数(){
document.getElementById(“weightl”).onchange=validateView;
document.getElementById(“weightu”).onchange=validateView;
}
函数validatewight(){
var up=document.getElementById(“weightu”).value;
var low=document.getElementById(“weightl”).value;
如果(低>高)
document.getElementById(“weightu”).setCustomValidity(“上限必须等于或大于下限”);
其他的
document.getElementById(“weightu”).setCustomValidity(“”);
}

您在比较字符串,而不是数字

if (+low > +up)
这是解决问题的一种方法

表单字段的“value”属性将始终是字符串。JavaScript字符串比较不会因为字符串看起来像数字就自动将其视为数字。在变量引用前面加上
+
将强制转换为数字。还有其他方法可以做到这一点:

if (Number(low) > Number(up))

等等。

我在JavaScript函数中没有看到“下限大于上限”的地方。
if (parseFloat(low) > parseFloat(up))