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&#34; if (isInteger(j) && j > 0)
&#34;无法导致&#34;真实&#34;。
即使我删除&#34; j > 0
&#34;并使用&#34; [1-9]
&#34;在正则表达式。
有更好的解决方案吗?
修改:抱歉,正则表达式错误,任何数字> 9
都是&#34; true&#34;太
编辑:对所有人来说很抱歉,我发现主要问题实际上是因为我在同一页面上使用相同的ID获得了其他表单&#34; ProductQuantity_
&#34 ; + i,并且可能会将IE7变为仅查看页面上找到的第一个元素。
也许我的原始代码实际上正在工作,但是它提醒我正则表达式不是预期的并且可以获得更好的代码。谢谢,再次抱歉。
答案 0 :(得分:1)
尝试:
function validateQuan() {
var minExist = "false";
for( i=0; i<3; i++) {
var j = parseInt(document.getElementById("ProductQuantity_"+i).value);
if( !isNaN(j) && j > 0) {minExist = "true"; alert("oi");}
}
if( minExist == "true") {...} else {...}
}
答案 1 :(得分:1)
var isInteger = function( str ) {
return (str|0) == str;
};
按位或按0确保带有浮点的字符串或数字被替换为整数
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");
}
}
答案 2 :(得分:0)
尝试:
function isInteger(char) {
return Number(char) == parseInt(char);
}