zoukankan      html  css  js  c++  java
  • 自己动手写的支持Ctrl与Shift多选的table

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <meta name="generator" content="editplus" />
      <meta name="author" content="" />
      <meta name="keywords" content="" />
      <meta name="description" content="" />
      <!-- code -->
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      
      <!-- out css -->
      <link type="text/css" rel="stylesheet" href="./common/base.css"/>
    
      <link type="text/css" rel="stylesheet" href="./common/table.css"/>
      <!-- page css -->        
      <style type="text/css">
        .bodyWarper {
            width:98%;
        }
      </style>
      <!-- out javascripts -->
      <script language="javascript" type="text/javascript" src="./common/jquery-1.4.4.min.js"></script>
      <!-- page javascripts -->
      <script language="javascript" type="text/javascript" >
            //ctrl 按键是否按下
            var K_CTRL = false;
            var K_SHIFT = false;
            var selNum = 0 ;
            //记录shift按键,第一次选择的tr
            var priorSelNode;
            
            //加载客户
            function loadSelCus(cusId) {
                //alert(cusId);
            }
    
            $(document)
                .keydown(function(event){
                    switch(event.keyCode) {
                        case 17 : K_CTRL = true ; break;
                        case 16 : K_SHIFT = true ; break;
                        default : K_CTRL = false;  K_SHIFT = false; break;
                    }
                })
                .keyup(function(event) {
                    switch(event.keyCode) {
                        case 17 : K_CTRL = false ; break;
                        case 16 : K_SHIFT = false ; break;
                        default : K_CTRL = false;  K_SHIFT = false; break;
                    }
                })
                .ready(function () {
                    $("#tableContent tr")
                        .click(function (event) {
                            //ctrl 与 shift 同时按下
                            if (K_CTRL && K_SHIFT) {
                                return ;
                            }
                            
                            //没有按shift,也没有按ctrl,不选择任何元素
                            if(!K_SHIFT && !K_CTRL) {
                                $(this).addClass("trFocus").siblings().removeClass("trFocus");
                                $("#tableContent tr").find(":checkbox").attr("checked","");
                                priorSelNode = $(this)[0];
                                var cusId = $(this).find(":checkbox").val();
                                loadSelCus(cusId);
                            }
                            //按住ctrl且不按住shift
                            if(!K_SHIFT && K_CTRL) {
                                $(this).find(":checkbox").attr("checked","checked");
                                $(this).addClass("trFocus");
                                $(priorSelNode).find(":checkbox").attr("checked","checked");
                                priorSelNode = $(this)[0];
                            }
                            //按住shift 
                            if (K_SHIFT && !K_CTRL) {
                                var startTRIndex = 0;
                                var endTRIndex = 0;
                                startTRIndex = Number($(priorSelNode).attr("rowindex"));
                                endTRIndex = Number($(this).attr("rowindex"));
                                var objs = $("#tableContent tr");
                                if (endTRIndex >= startTRIndex){
                                    for (var i = startTRIndex ; i <= endTRIndex ; i++) {
                                        
                                        $(objs[i]).addClass("trFocus");
                                        $(objs[i]).find(":checkbox").attr("checked","checked");
                                    }
                                }
                                else {
                                    for (var i = startTRIndex ; i >= endTRIndex ; i--) {
                                        alert(i);
                                        $(objs[i]).addClass("trFocus");
                                        $(objs[i]).find(":checkbox").attr("checked","checked");
                                    }
                                }                            
                                K_SHIFT = false;
                                priorSelNode = $(this)[0];
                            }
                        })
                        .hover(function () {
                            $(this).addClass("trHover").siblings().removeClass("trHover");
                        });
                    $("#tableContent tr :checkbox").click(function (event) {
                        event.stopPropagation();
                        var checked = $(this).attr("checked");
                        var $pTr = $(this).parents("tr");
                        if (checked) {
                            $pTr.addClass("trFocus");
                        }else {
                            $pTr.removeClass("trFocus");
                        }
                    });
                });
                
                
                
       </script>
    
      
     </head>
    
     <body>
        <table id="tableMain">
            <tbody id="tableContent">
                <tr id="tr_001" rowindex="0" selectState="no">
                    <td>1<input type="checkbox"  name="optIds" value="1"/> </td><td>方明</td><td>13986547891</td>
                </tr>
                <tr id="tr_002" rowindex="1" selectState="no">
                    <td>2<input type="checkbox"  name="optIds" value="2"/> </td><td>方明1</td><td>13986547891</td>
                </tr>
                <tr id="tr_003" rowindex="2" selectState="no">
                    <td>3<input type="checkbox"  name="optIds" value="3"/> </td><td>方明2</td><td>13986547891</td>
                </tr>
                <tr id="tr_004" rowindex="3" selectState="no">
                    <td>4<input type="checkbox"  name="optIds" value="4"/> </td><td>方明3</td><td>13986547891</td>
                </tr>
                <tr id="tr_005" rowindex="4" selectState="no">
                    <td>5<input type="checkbox"  name="optIds" value="5"/> </td><td>方明</td><td>13986547891</td>
                </tr>
                <tr id="tr_006" rowindex="5" selectState="no">
                    <td>6<input type="checkbox"  name="optIds" value="6"/> </td><td>方明1</td><td>13986547891</td>
                </tr>
                <tr id="tr_007" rowindex="6" selectState="no">
                    <td>7<input type="checkbox"  name="optIds" value="7"/> </td><td>方明2</td><td>13986547891</td>
                </tr>
                <tr id="tr_008" rowindex="7" selectState="no">
                    <td>8<input type="checkbox"  name="optIds" value="8"/> </td><td>方明3</td><td>13986547891</td>
                </tr>
                <tr id="tr_009" rowindex="8" selectState="no">
                    <td>9<input type="checkbox"  name="optIds" value="9"/> </td><td>方明</td><td>13986547891</td>
                </tr>
                <tr id="tr_010" rowindex="9" selectState="no">
                    <td>10<input type="checkbox"  name="optIds" value="10"/> </td><td>方明1</td><td>13986547891</td>
                </tr>
                <tr id="tr_011" rowindex="10" selectState="no">
                    <td>11<input type="checkbox"  name="optIds" value="11"/> </td><td>方明2</td><td>13986547891</td>
                </tr>
                <tr id="tr_012" rowindex="11" selectState="no">
                    <td>12<input type="checkbox"  name="optIds" value="12"/> </td><td>方明3</td><td>13986547891</td>
                </tr>
            </tbody>
        </table>
      
     </body>
    </html>
  • 相关阅读:
    raid阵列算法/数据恢复方法汇总
    EMC Isilon(OneFS)误删文件数据恢复过程<存储数据恢复>
    Raid磁盘阵列更换磁盘时另一块盘离线(v7000存储数据恢复)
    SqlServer数据库无法读取的数据恢复方案实施过程
    ds4800服务器lvm信息丢失数据恢复方案
    Hyper-V数据文件丢失数据恢复过程
    v7000存储数据恢复成功率分析-数据恢复初检报告
    Ext4文件系统fsck后损坏如何恢复?-北亚数据恢复
    服务器raid5两块硬盘离线lvm vxfs文件系统数据恢复过程
    临时表
  • 原文地址:https://www.cnblogs.com/treemanfm/p/2556612.html
Copyright © 2011-2022 走看看