0

gridview 行中的复选框验证检查问题

嗨,我编写了如下所示的 js 函数,它将用于检查至少一个复选框应在侧 gridview 行中选中,在单击提交按钮之前,此代码在 IE 中运行良好,但在 Firefox 和 chrome 中无法运行,谁能告诉我哪里错了?.

她的功能

function ClientCheck() {
    var valid = false;
    var gv = document.getElementById("ctl00_cplContent_gvCurrenttarrif");   
    for (var i = 0; i < gv.all.length; i++) {
        var node = gv.all[i];
        if (node != null && node.type == "checkbox" && node.checked) {
            valid = true;
            break;
        }
    }
    if (!valid) {
        alert("Invalid. Please select a checkbox to continue with changes.");
    }
    return valid;
}
4

3 回答 3

1

Element.all不是标准的,所以你不应该使用它。改用childNodes

更改您的代码,如下所示。

function ClientCheck() {
    var valid = false;
    var gv = document.getElementById("ctl00_cplContent_gvCurrenttarrif");   
    for (var i = 0; i < gv.childNodes.length; i++) {
        var node = gv.childNodes[i];
        if (node != null && node.type == "checkbox" && node.checked) {
            valid = true;
            break;
        }
    }
    if (!valid) {
        alert("Invalid. Please select a checkbox to continue with changes.");
    }
    return valid;
}
于 2013-08-29T12:08:00.463 回答
0

突出显示评论ramakrishna-p作为答案:

http://forums.asp.net/t/1932293.aspx?Check+box+validation+checking+problem+in+gridview+rows+

工作代码是:

function ClientCheck() {
    var valid = false;
    var gv = document.getElementById("ctl00_cplContent_gvCurrenttarrif");
    for (var i = 0; i < gv.getElementsByTagName("input").length; i++) {
        var node = gv.getElementsByTagName("input")[i];
        if (node != null && node.type == "checkbox" && node.checked) {
            valid = true;
            break;
        }
    }
    if (!valid) {
        alert("Invalid. Please select a checkbox to continue with changes.");
    }
    return valid;
}
于 2014-02-22T05:19:25.103 回答
0

最好使用 jQuery 或类似的库来访问 DOM 元素。

例如使用 jquery

var checkedBoxesCount = $("<%=gvCurrenttarrif.ClientID%>").find("input:checkbox:checked").length;
if(checkedBoxesCount==0) alert("NO CHECKBOX SELECTED");
于 2013-08-29T12:18:52.667 回答