function isInteger(char) {
return (char.toString().search(/^-?[0-9]+$/) == 0 )
}
function validateQuan() {
var minExist = "false";
for (i=0; i<3; i++) {
var j = document.getElementById("ProductQuantity_"+i).value;
if (isInteger(j) && j > 0) {minExist = "true";alert("oi");}
}
if (minExist == "true") {$("#pvs_form").submit();} else {alert("Please enter at least one valid quantity");}
}
上面是我的代码,它适用于 FF 3.6 和 IE8,但不适用于 IE7。
在 IE7 中,“if (isInteger(j) && j > 0)
”无法得出“true”。
即使我删除“j > 0
”并在正则表达式上使用“[1-9]
”。
还有更好的解决方案吗?
编辑:抱歉,正则表达式是错误的,任何数字 > 9
也是“true”。
编辑:非常抱歉,我刚刚发现主要问题实际上是因为我在同一页面上得到了具有相同 id“ProductQuantity_
”+i 的其他表单,并且可能会使 IE7 只查看页面上找到的具有该 id 的第一个元素。
也许我原来的代码实际上可以工作,但谢谢提醒我正则表达式不符合预期并获得更好的代码。再次感谢并抱歉。
最佳答案
var isInteger = function( str ) {
return (str|0) == str;
};
按位或 0 确保将字符串或 float 字替换为整数
isInteger("3.4") // false
isInteger("abc") // false => "abc"|0 = 0
isInteger("3") // true
现在:
function validateQuan() {
var minExist = false ;
for (var i = 0; i < 3; i++ ){
var j = document.getElementById("ProductQuantity_"+i).value;
if ( isInteger( j ) && j > 0 ) {
minExist = true;
alert("oi");
break; // goal achieved, break loop
}
}
if ( minExist ) {
$("#pvs_form").submit();
} else {
alert("Please enter at least one valid quantity");
}
}
关于IE7 中的 javascript,数字(整数)验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845797/