我有这个JavaScript函数来验证,如果一个数比另一个数大
function validateForm() {
var x = document.forms["frmOrder"]["txtTotal"].value;
var y = document.forms["frmOrder"]["totalpoints"].value;
if (x > y) {
alert("Sorry, you don't have enough points");
return false;
}
}
它不工作的某些原因。
如果我做alert(x)
我得到1300和alert(y)
给999
该工程....
function validateForm() {
var x = 1300;
var y = 999;
if (x > y) {
alert("Sorry, you don't have enough points");
return false;
}
}
你应该将它们转换为前比较数字。
尝试:
if (+x > +y) {
//...
}
要么
if (Number(x) > Number(y)) {
// ...
}
注: parseFloat
和pareseInt
(用于比较整数,你需要指定的基数 )会给你NaN
空字符串,用比较NaN
永远是false
,如果你不想把空字符串为0
,那么你可以使用它们。
你比较字符串。 JavaScript的ASCII码的字符串的每个字符进行比较。
要知道为什么你假,看看charCodes:
"1300".charCodeAt(0);
49
"999".charCodeAt(0);
57
比较结果为假,因为,在比较字符串时,对1中的字符代码不大于9大。
解决方法是把串数字。 您可以使用多种方法:
parseInt(string, radix)
parseInt("1300", 10);
> 1300 - notice the lack of quotes
+"1300"
> 1300
Number("1300")
> 1300
你可以在“投”到号码使用号码构造..
var number = new Number("8"); // 8 number
您也可以拨打parseInt函数内置函数:
var number = parseInt("153"); // 153 number
做这个。
var x=parseInt(document.forms["frmOrder"]["txtTotal"].value);
var y=parseInt(document.forms["frmOrder"]["totalpoints"].value);