CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

按住Shift键快速多选

楼主jon1365(jon)2005-08-01 16:48:26 在 Java / Web 开发 提问

如何用javaScript实现按住Shift键快速多选 问题点数:100、回复次数:8Top

1 楼dxj1234(Kindly⊙Wolf)回复于 2005-08-01 16:59:32 得分 0

页面里本身不支持多选  
  看来只有自己搞个集合存储选中的对象Top

2 楼jon1365(jon)回复于 2005-08-01 17:02:40 得分 0

指选种多选框Top

3 楼laughsmile(海边的星空)回复于 2005-08-01 22:30:09 得分 0

<body   >  
  <form>  
  <table   >  
  <tr   id="item1"   onclick="checkSelect(this)"   ><td>11111111</td></tr>  
  ....  
  <tr   id="item20"   onclick="checkSelect(this)"><td>222222</td></tr>  
  </table>  
  <form>  
  <script>  
  function   checkSelect(i){  
      if   (window.event.shiftKey)  
        i.style.backgroundColor='#FFCC66'  
      else  
        i.style.backgroundColor='#FFffff'  
  }  
  </script>  
  </BODY>Top

4 楼joneyonly()回复于 2005-08-02 08:42:09 得分 0

markTop

5 楼waiting007(威霆)回复于 2005-08-02 09:08:46 得分 0

学习Top

6 楼su27007(人外有人,天外有天)回复于 2005-08-02 09:15:54 得分 0

laughsmile(海边的星空)   说的这个不错,值得学习!Top

7 楼jon1365(jon)回复于 2005-08-02 11:46:48 得分 0

可能是我说的不清楚吧。  
  我的意思是按住   Shift键不放   选种第一行的多选框,再选第六行,一次性把第一至第六行的多选框都选种。Top

8 楼cosmograd(cosmograd)回复于 2005-08-02 15:00:54 得分 100

很无聊,就写了一个。  
  按住Shift,反向选择是取消,正向选择是选中。支持Ctrl键的连选  
   
  <html>  
  <body   onload="initObjects()">  
  <form>  
   
  <TABLE>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">111111</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">222222</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">333333</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">444444</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">555555</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">666666</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">777777</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">888888</TD>  
  </TR>  
  <TR   onclick="checkSelect(this)">  
  <TD><INPUT   TYPE="checkbox"   NAME="boxitem">999999</TD>  
  </TR>  
  </TABLE>  
   
  </form>  
   
  <script>  
   
  var   selectedIndex   =   -1;  
  var   tmpSelectedIndex   =   -1;  
   
  var   itemsStatus   =   [];  
  var   alltr   =   [];  
  var   allcheckbox   =   [];  
   
  function   initObjects()  
  {  
  alltr   =   document.all.tags("tr");  
   
  var   allinput   =   document.all.tags("input");  
  var   checkboxLength   =   0;  
   
  for   (var   i=0;i<allinput.length;i++)  
  {  
  if   (allinput[i].type   ==   "checkbox")  
  {  
  allcheckbox[checkboxLength]   =   allinput[i];  
  itemsStatus[i]   =   "0";  
  checkboxLength   ++;  
  }  
  }  
  }  
   
  function   checkSelect(obj){  
   
  var   objIndex   =   -1;  
   
  for   (var   i=0;i<alltr.length;i++)  
  {  
  if   (obj   ==   alltr[i])  
  {  
  objIndex   =   i;  
  break;  
  }  
  }  
   
  if   (window.event.shiftKey)  
  {  
  if   (selectedIndex   ==   -1)  
  {  
  selectItem(objIndex);  
  selectedIndex   =   objIndex;  
  }else  
  {  
  selectItem(selectedIndex,objIndex)  
  }  
  }else   if   (window.event.ctrlKey)  
  {  
  selectItem(objIndex);  
  selectedIndex   =   objIndex;  
  }else  
  {  
  selectItem(objIndex);  
  clearAllOtherSelected(objIndex);  
  selectedIndex   =   objIndex;  
  }  
  }  
   
  function   selectItem(beginIdx,endIdx)  
  {  
  selectTr(beginIdx,endIdx);  
  selectCheckbox(beginIdx,endIdx);  
  }  
   
  function   selectTr(beginIdx,endIdx)  
  {  
  var   itemFlag   =   false;  
  if   (endIdx   !=   null)  
  {  
  if   (beginIdx   <   endIdx)  
  {  
  itemFlag   =   true;  
  for   (var   i=beginIdx;i<=endIdx;i++)  
  {  
  setTr(i,itemFlag);  
  }  
  }else   if   (beginIdx   >   endIdx)  
  {  
  itemFlag   =   false;  
  for   (var   i=endIdx;i<=beginIdx;i++)  
  {  
  setTr(i,itemFlag);  
  }  
  }else  
  {  
  itemFlag   =   isItemNotSelected(beginIdx);  
  setTr(beginIdx,itemFlag);  
  }  
  }else  
  {  
  itemFlag   =   isItemNotSelected(beginIdx);  
  setTr(beginIdx,itemFlag);  
  }  
  }  
   
  function   selectCheckbox(beginIdx,endIdx)  
  {  
  var   itemFlag   =   false;  
  if   (endIdx   !=   null)  
  {  
  if   (beginIdx   <   endIdx)  
  {  
  itemFlag   =   true;  
  for   (var   i=beginIdx;i<=endIdx;i++)  
  {  
  setCheckbox(i,itemFlag);  
  setItemSatus(i,itemFlag);  
  }  
  }else   if   (beginIdx   >   endIdx)  
  {  
  itemFlag   =   false;  
  for   (var   i=endIdx;i<=beginIdx;i++)  
  {  
  setCheckbox(i,itemFlag);  
  setItemSatus(i,itemFlag);  
  }  
  }else  
  {  
  itemFlag   =   isItemNotSelected(beginIdx);  
  setCheckbox(beginIdx,itemFlag);  
  setItemSatus(beginIdx,itemFlag);  
  }  
  }else  
  {  
  itemFlag   =   isItemNotSelected(beginIdx);  
  setCheckbox(beginIdx,itemFlag);  
  setItemSatus(beginIdx,itemFlag);  
  }  
  }  
   
  function   isItemNotSelected(idx)  
  {  
  if   (itemsStatus[idx]   ==   null   ||   itemsStatus[idx]   ==   "0")  
  return   true;  
  else  
  return   false;  
  }  
   
  function   setCheckbox(idx,selectFlag)  
  {  
  allcheckbox[idx].checked   =   selectFlag;  
  }  
   
  function   setTr(idx,selectFlag)  
  {  
  if   (selectFlag)  
  {  
  alltr[idx].style.backgroundColor   =   "#FFCC66";  
  }else  
  {  
  alltr[idx].style.backgroundColor   =   "#FFFFFF";  
  }  
  }  
   
  function   setItemSatus(idx,selectFlag)  
  {  
  if   (selectFlag)  
  {  
  itemsStatus[idx]   =   "1";  
  }else  
  {  
  itemsStatus[idx]   =   "0";  
  }  
  }  
   
  function   clearAllSelected()  
  {  
  for   (var   i=0;i<itemsStatus.length;i++)  
  {  
  if   (itemsStatus[i]   ==   "1")  
  {  
  setTr(i,false);  
  setCheckbox(i,false);  
  setItemSatus(i,false);  
  }  
  }  
  }  
   
  function   clearAllOtherSelected(idx)  
  {  
  for   (var   i=0;i<itemsStatus.length;i++)  
  {  
  if   (idx   !=   i   &&   itemsStatus[i]   ==   "1")  
  {  
  setTr(i,false);  
  setCheckbox(i,false);  
  setItemSatus(i,false);  
  }  
  }  
  }  
   
  </script>  
  </BODY>  
  </html>Top

相关问题

  • 怎样按住CTRL或Shift键进行DBGRID对应的数据集的连选?
  • 如何可以让数据窗口支持多选?如按住ctrl或shift键,多选数据窗口中的记录。
  • 如何捕捉按住Ctrl的键盘消息!
  • 关于键盘按住不放的问题
  • 如何实现按住ctrl键选定多行数据?
  • StringGrid控件如何才能实现按住CTRL键,多选?
  • 在有网格的视图下,我先画了一个矩形,然后按照书上说的,按住SHIFT键拖动,就会复制一个矩形,但不能对齐网格,如何解决.
  • 按住鼠标左键不放移动鼠标,这能触发什么事件?
  • ***********为什么有的USE的单元,按住CTRL键跳到该单元去?******************
  • 请教如何响应按住鼠标左键“不动”这样一个动作

关键词

  • 按住shift键
  • 多选

得分解答快速导航

  • 帖主:jon1365
  • cosmograd

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo