0

我正在使用以下代码来检测我的 gridview 模板字段中的复选框是否被选中。如果没有选中任何复选框,那么我想显示警报消息。

   function findCheckBox() {

        var inputElements = document.getElementsByTagName('input');
        var chekSelect = false;
        for (var i = 0; i < inputElements.length; i++) {
            var myElement = inputElements[i];


            if (myElement.type === "checkbox") {

                if (myElement.checked === false) {

                    chekSelect = true;
                    return true;
                }
            }

            if (chekSelect === true) {
                return true;
            }

            else {
                alert('Please Check Atleast one record to print cheque!!!');
                return false;
            }
        }  

    }

但是,当我点击我的按钮时,即使选中了一个或多个复选框,它也会向我显示一次错误消息。我在这里做错了什么。谁能帮助我。

4

3 回答 3

3

你的逻辑有点不对劲。修正版:

jsFiddle 演示

function findCheckBox() {
    var inputElements = document.getElementsByTagName('input');
    var chekSelect = false;
    for (var i = 0; i < inputElements.length; i++) {
        var myElement = inputElements[i];

        if (myElement.type === "checkbox") {
            if (myElement.checked) {
                chekSelect = true;
                break;
            }
        }
    }

    if(!chekSelect) {
        alert('Please Check Atleast one record to print cheque!!!');
        return false;
    } else {
        return true;
    }
}

我已经更改了.checked测试,以测试它是否为truenot false,因为您想知道是否至少选中了一个复选框。我还添加了一个中断,并将警报移到了 for 之外,因为在 for 完成之前你不会知道是否有一个复选框被选中。

于 2013-07-04T08:15:58.560 回答
3

尝试这个

function findCheckBox() {
    var inputElements = document.getElementsByTagName('input');
    for (var i = 0; i < inputElements.length; i++) {
        var myElement = inputElements[i];
        if (myElement.type === "checkbox" && myElement.checked) {
            return true;
        }
    }
    alert('Please Check Atleast one record to print cheque!!!');
    return false;
}
于 2013-07-04T08:17:39.727 回答
1

使用 JQuery:

var checked = false;
$('input:checkbox').each(function(){
    if($(this).prop('checked')){
        checked = true;
        break;
    }
});

if(!checked) alert('Please Check At least one record to print cheque!!!')
于 2013-07-04T08:17:45.170 回答