jQuery全选反选

  1. 界面
  2. 实现全选
  3. 全选和反选

项目使用freemarker
checkbox复选框的个数是依据从数据库中取出值的条数决定的,是list循环遍历出来的。

界面

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" >
    <tr>
        <td colspan="3" align="center" >
            <strong>
                <input type="checkbox" name="checkAll" id="checkAll" onclick="checkAll23();"/>全选/反选
            </strong>
        </td>
    </tr>
    <tr>
        <td colspan="3" style="border-top:1px solid #fff;" ></td>
    </tr>
<#list page.list as item>
    <tr>
        <td>
            <input type="checkbox" id="check" name="check"  value="<#if item.id?exists>${item.id}</#if>"/>
        </td>
    </tr>
</#list>
</table>

实现全选

$(document).ready(function(){
    //全选
    $("#checkAll").click(function() {//全选框
        if($(this).is(":checked")) {//选中,全选
            $("input[name='check']").each(function() {
                this.checked = true;
            });
        } else {//未选中,全不选
            $("input[name='check']").each(function() {
                this.checked = false;
            });
        }
    });
    $("input[name='check']").click(function() {//其他选择框
        if($(this).is(":checked")) {
            var flag = true;
            $("input[name='check']").each(function() {
                if(this.checked==false) {
                    flag = false;
                }
            });
            if(flag==true) {//全部选中,全选框选中
                document.getElementById("checkAll").checked = true;
            }
        } else {//取消选中,全选框不选中
            $("#checkAll").attr("checked", false);
        }
    });
});

全选和反选

在全部选择状态下,选中全选/反选框,有一个未选中则不选中全选/反选框,同时实现反选的功能。
更好的选择是:将全选和反选分别提供一个按钮。

$(document).ready(function(){
    //加载进来就是全选的情况 --start
    var flag1 = true;
    $("input[name='check']").each(function() {
        if(this.checked==false) {
            flag1 = false;
        }
    });
    if(flag1==true) {
        document.getElementById("checkAll").checked = true;
    }//--end
    $("input[name='check']").click(function() {
        if($(this).is(":checked")) {
            var flag = true;
            $("input[name='check']").each(function() {
                if(this.checked==false) {
                    flag = false;
                }
            });
            if(flag==true) {
                document.getElementById("checkAll").checked = true;
            }
        } else {
            $("#checkAll").attr("checked", false);
        }
    });
});

//全选反选
function checkAll23(){
    //反选
    $("#checkAll").prop("disabled",'true');
    $("input[name='check']").each(function(){
        if($(this).is(":checked")){
            $(this).removeProp("checked");
        }else{
            $(this).prop("checked",'true');
        }
    });
    $("#checkAll").removeProp("disabled");

    //上面的在 遨游浏览器中出现问题
    //--可换用下方代码--start
    var names=document.getElementsByName("check");
    var len=names.length;
    if(len>0){
        var i=0;
        for(i=0;i<len;i++){
            if(names[i].checked)
                 names[i].checked=false;
             else
                 names[i].checked=true;
        }
    }
    //----end
    //检查全选/反选框是否应该被选中
    var flag = true;
    $("input[name='check']").each(function() {
        if(this.checked==false) {
            flag = false;
        }
    });
    if(flag==true) {
        document.getElementById("checkAll").checked = true;
    } else {
        $("#checkAll").attr("checked", false);
    }
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com

文章标题:jQuery全选反选

文章字数:649

本文作者:Bin

发布时间:2016-03-02, 11:33:00

最后更新:2019-08-06, 00:52:59

原始链接:http://coolview.github.io/2016/03/02/JavaScript/jQuery%E5%85%A8%E9%80%89%E5%8F%8D%E9%80%89/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录