HTML表单约束的JavaScript-数字问题
HTML Form constrain by JavaScript--number issue
我正在编写一个表单来请求输入权重范围的下限和上限,并返回权重范围内的对象。为了防止用户输入下限>上限(如:下限=5,上限=2),我使用下面的javascript。测试时,当上限和下限均小于10时,表单生成预期结果。
但是,当我试穿时,它返回"下限大于上限"错误消息
此外,当我尝试lower=2和upper=30时,它再次工作。(我正在使用Chrome进行测试)似乎它只是比较下和上输入的第一个数字。不确定是否由不正确的输入类型或Javascript引起。有人能帮忙解决这个问题吗?由于
<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>
你在比较字符串,而不是数字。
if (+low > +up)
是解决这个问题的一种方法。
表单字段的"value"属性总是一个字符串。JavaScript字符串比较不会仅仅因为字符串看起来像数字就自动将其视为数字。在变量引用前加上+
强制转换为数字。还有其他方法:
if (Number(low) > Number(up))
或
if (parseFloat(low) > parseFloat(up))
等。
相关文章:
- Podio问题:Can't将字符串转换为数字
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 浮点数字问题JavaScript
- 数据表rowId以数字问题开头
- JavaScript正则表达式代码匹配字符和数字的问题
- Java脚本中的一些大数字出现问题
- Javascript生成错误数字的问题
- 通过 JavaScript 在 td 中增加数字的问题
- 有一些JavaScript问题,for loop.将数字转换为其字符串值
- 这个javascript日期解析有什么问题?为什么 js 讨厌数字 8
- jQuery data() 将字符串视为数字的问题
- Javascript新手问题,将数字转换为任何单词
- 在 JavaScript 中向上舍入数字有问题
- Google Charts - hAxis 上的数字/字符串问题(Jquery ajax JSON 数据)
- JavaScript,数字舍入问题
- 将 JavaScript 字符串转换为数字时出现问题
- 检查数组是否包含数字(问题为 0)
- 可以't将字符串转换为数字javascript我的代码出了什么问题
- 单位数和双位数的数字问题
- HTML表单约束的JavaScript-数字问题