【发布时间】:2015-03-06 15:10:34
【问题描述】:
对于表单验证,我使用了一个非常简单的比较。 If y >= x 然后返回false。
我已经通过使用parseInt() 解决了我的问题,但我不明白为什么我需要这个函数只用于一个值。吃代码:
function validateForm() {
var x = parseInt(document.forms["einstform"]["zeit1"].value);
var y = parseInt(document.forms["einstform"]["zeit2"].value);
if (y >= x) {
alert("Nope." + " " + x + " " + y);
return false;
}
}
这是我的表格:
<form name="einstform" action="a file" method="GET" onSubmit="return validateForm();">
<select name="zeit1">
<option value="30">1 Month</option>
<option value="60" selected>2 Months</option>
<option value="90">3 Months</option>
</select>
<select name="zeit2">
<option value="0">Never</option>
<option value="7">1 Week</option>
<option value="14" selected>2 Weeks</option>
<option value="21">3 Weeks</option>
<option value="30">4 Weeks</option>
<option value="42">6 Weeks</option>
<option value="60">8 Weeks</option>
<option value="84">12 Weeks</option>
</select>
我想这很容易理解。它只是比较选定的值并在y >= x 时取消表单提交。它工作得很好,是的。但是如果我在第二个选择“1 周”(值 = 7)中选择,脚本总是告诉我 7 >= 30。
当然,它可能会为 7 获得一个字符串值,因为我必须使用 parseInt()(并且它可以工作)。
但为什么除了7 之外,所有其他值的 int 比较都能完美运行?
这只是随机告诉我“总是使用parseInt()”还是有更多可以理解为什么7 拒绝成为int 值?
【问题讨论】:
-
如果不将值解析为整数,则将其解释为字符串并且 "7" >= "3"
-
因为
.value是一个字符串。如果没有parseInt,您将执行字典比较,而不是数学比较 -
@wye 我读了你的回答,它完全符合我的问题。抱歉,我之前没有找到那个答案(没想到字典比较,我的错)。
标签: javascript