对于表单验证,我使用非常简单的比较。 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&gt; = 30.
当然,它可能会获得7
的字符串值,因为我必须使用parseInt()
(并且可以使用它)。
但是为什么所有其他值的int比较完美,除了7
这是随机告诉我“总是使用parseInt()
”还是有更多要理解为什么7
拒绝成为int值?
答案 0 :(得分:2)
如果您不使用parseInt()
解析值,则表示该字符串。
否则你得到string >= string
现在改为7 >= 3