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

标签 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 中,“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/

相关文章:

javascript - 如何使用 Dropzone.js 在服务器错误响应后触发警报

Javascript 命名空间和 IE7 的问题

html - IE7 CSS Mega 菜单问题

jquery - 如果字体样式为斜体,IE7 在 slideToggle 上失败?

javascript - 这个 Angular JS 代码片段是如何工作的?

javascript - 使用 jQuery 克隆 div 并增加子类

Javascript 代码处理流程(函数中的函数)

CSS 表格 td 宽度和右对齐不起作用

html - IE7 和 IE8 不加载条件 CSS

javascript - 在javascript中将html表转换为多维数组