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