IE7中的javascript,数字(整数)验证不起作用

时间:2012-01-13 04:06:42

标签: javascript internet-explorer-7

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变为仅查看页面上找到的第一个元素。 也许我的原始代码实际上正在工作,但是它提醒我正则表达式不是预期的并且可以获得更好的代码。谢谢,再次抱歉。

3 个答案:

答案 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);
}