`
kongshanxuelin
  • 浏览: 926870 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Web开发中利用Ctrl,Shift键鼠标多选的控制

阅读更多

在C/S程序开发中,想要实现类似tree或grid中ctrl和shift键多选的功能,一般底层控件都默认支持的,你不需要做什么,但在Web开发中,想要实现ctrl,shift配合鼠标的多选功能并不是一件十分容易的事情,本文将对这方面进行展开的思路讨论,并附上关键的代码片段,有兴趣的读者可以一起探讨研究。

这里我要实现一个tree和table控件的关于ctrl和shift键的多选功能,先来说tree,我的处理思路如下:

 

  1. tree中针对每个节点加上索引值,如1,2,3,……,便于提高遍历效率
  2. 获取之前选中的树节点,并获取索引值,标记为:istart
  3. 获取当前选中的树节点,并获取索引值,标记为:iend
  4. 如istart>iend,将两值调换,因为shift键可以往上选取
这个代码片段看起来可能类似这样(伪代码):

$("树节点").click(function(e) { 		  
  if(!e.ctrlKey&&!e.shiftKey) {
		//删除所有节点的选中样式
   }
  if(e.shiftKey) { 
	  var preSelectedLi = 得到选中的开始节点;
	  var thisSelectedLi = 得到shift键按下的当前节点;

	  var temp1 = 获取开始的索引值;
	  var temp2 = 获取结束的索引值;
	  if(temp1&&temp2&&temp1.length==2&&temp2.length==2){
		  if(temp1[0]===temp2[0]){
			  var istart = 开始值;
			  var iend = 结束值;
			  var itemp;
			  if(istart>iend){
				  itemp = iend;
				  iend = istart;
				  istart = itemp;
			  }
			  for(var i=istart;i<=iend;i++){
				 //得到的树节点加入选取样式
			  }
		  }else{
			  //删除树节点样式
		  }
	  }else{
		  //删除树节点样式
	  }
  }else{
	  //toggle树节点样式
  }
});	
 
table的多选控制非常类似,少的一个步骤是不用给树节点加入索引我们就可以正确的选取,如果你使用JQ的话,可以利用index函数,如果你直接用js,可以利用rowIndex属性获得!

 

2
0
分享到:
评论

相关推荐

    不按CTRL键实现多选

    在传统的多选模式中,用户通常需要持续按住Ctrl键来选取不连续的项目,或者使用Shift键选取连续的项目范围。 描述中的链接指向了一个个人博客的文章,虽然没有具体的文字描述,但我们可以推测这篇文章可能介绍了一...

    table客户端排序 ctrl shift 连选实例

    4. **实现Ctrl+Shift选择**:在`tableselect.js`中,我们需要监听键盘的Ctrl和Shift键,以及鼠标点击事件。当Ctrl或Shift键被按下时,记录当前选中的行,并更新选区。每次点击时,根据当前选区来改变行的选中状态。 ...

    dropdownlist下拉框实现多选

    通过键盘的Shift或Ctrl键(在Windows/Linux上)或Command键(在Mac上)可以实现多选。 ### JavaScript与jQuery的交互 虽然HTML5的`&lt;select&gt;`可以实现基本的多选功能,但在实际应用中,我们可能需要更复杂的交互和...

    Web&sublime常用技巧202-01-25.docx

    4. **垂直多行选择:Shift 鼠标右键 (Win)/Option 鼠标左键 (Mac) 或鼠标中键** 在Windows上,你可以按住Shift键并用鼠标右键点击来创建垂直选区。在Mac上,使用Option键加鼠标左键,或者直接使用鼠标中键拖动。...

    Web测试中的界面测试用例设计.doc

    列表框控件的测试方法包括条目内容正确、列表框的内容较多时要使用滚动条、列表框允许多选时要分别检查 shift 选中条目、按 ctrl 选中条目和直接用鼠标选中多项条目的情况等。 滚动条控件的测试方法包括滚动条的...

    鼠标点击拖动选中(模仿google日历网格)

    同时,要考虑多选和取消选中的功能,这可能需要用到`shift`键或`ctrl`键的组合。此外,性能优化也是关键,大量元素的选中可能导致重绘频繁,应当避免不必要的计算和更新。 源码分析可以帮助我们更深入地理解这一...

    2021-2022计算机二级等级考试试题及答案No.12750.docx

    本文主要涵盖了计算机二级等级考试中的多项选择题及其答案,涉及了多个计算机基础知识和Web开发相关的知识点。 1. HTTP协议是在传输层协议TCP之上的应用层协议,用于传输网页和其他互联网资源。 2. Model1体系结构...

    asp.net cbo实现多行选中.rar

    4. **样式和交互**:定制控件的外观,确保多选状态的视觉反馈清晰,同时处理好键盘和鼠标交互,如Ctrl+点击多选、Shift+点击范围选择等。 5. **值获取**:在提交表单或触发其他操作时,从ComboBox或CheckBoxList中...

    2021-2022计算机二级等级考试试题及答案No.10513.docx

    8. **列表框多选** - 若要在列表框中启用使用Ctrl和Shift键进行多选,应将Multiselect属性设置为3,即EXTENDED。 9. **保留字** - 保留字是编程语言中预定义的、具有特殊含义的词汇,不能用作变量或函数名。B选项中...

    Excel使用技巧大全(超全)

    - 在打开Excel后,通过 “文件” &gt; “打开” 选择多个文件,使用 `Ctrl` 键进行多选。 **12. 快速切换工作簿** - 使用任务栏预览功能快速切换已打开的工作簿。 - 使用快捷键 `Ctrl + Tab` 或者 `Ctrl + Page Up/...

    2021-2022计算机二级等级考试试题及答案No.17650.docx

    9. 列表框多选设置:在VB或类似的编程环境中,设置Multiselect属性为2(vbMultiSimple)允许使用Ctrl和Shift键进行多选。 10. MIDI和WAV音频文件:MIDI文件存储音乐指令,而WAV是波形音频文件,两者都是计算机音频...

    第二章第七节——列表框控件

    通常,你需要启用`SelectionMode`为`MultiSimple`或`MultiExtended`,并可能需要配合`Shift`或`Ctrl`键来实现多选。 六、自定义列表框 为了满足更复杂的需求,开发者可能会扩展列表框控件的功能,比如添加搜索功能...

    office2003教程

    11. **一次性打开多个工作簿**:使用“文件”菜单中的“打开”命令,按住Ctrl键多选文件。 12. **快速切换工作簿**:利用任务栏预览或使用Alt+F6快捷键。 13. **选定超级链接文本**:按Ctrl键点击超级链接,或使用...

    计算机基础及办公自动化(下)多选题讲解.doc

    - 按&gt;键、Enter键和Ctrl+Shift+;键都不会使左边单元格变为当前单元格。 12. Excel文件保存类型: - 可以保存为一般工作表文件,扩展名为.XLS。 - 可以保存为文本文件,扩展名为.TXT。 - 也可以保存为其他格式如...

    js/jq仿window文件夹框选操作插件

    - 添加键盘快捷键支持,如Ctrl或Shift键进行多选。 - 提供API以供外部控制选区,例如设置初始选区、获取当前选区内的元素等。 - 添加动画效果,使框选过程更流畅。 - 考虑不同浏览器的兼容性问题,确保在各种环境下...

    Excel样式表格单元格选择jQuery插件

    4. 多选模式:允许用户通过Shift键或Ctrl键进行连续或不连续的多选。 5. 事件触发:提供自定义事件,如`select`或`deselect`,让其他代码可以监听单元格的选择变化。 六、应用示例 在实际项目中,我们可以这样使用...

    性感的sublimetext html 中文文档

    Sublime Text是一款备受程序员喜爱的轻量级、高效且高度可定制的文本编辑器,尤其在HTML和Web开发领域中广泛应用。它以其丰富的特性、快捷的操作以及强大的插件生态系统赢得了广泛的赞誉。以下是对Sublime Text在...

    JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt

    至于禁用键盘上的Shift、Ctrl和Alt键,这些通常是用来触发特殊功能的,如多选、打开新窗口或执行快捷键操作。在JavaScript中,我们可以通过监听`keydown`事件来实现: ```javascript document.onkeydown = function...

    WinFormWebKit以及两个Grid数据拖拽

    2. **多条数据拖拽**:在Grid控件中实现多选数据拖拽,通常需要在选择模式上进行设置,允许用户通过Ctrl或Shift键选择多行。拖动过程中,需收集所有选定行的数据,并在拖放目标上显示相应的视觉反馈。 3. **多个或...

    2021-2022计算机二级等级考试试题及答案No.2435.docx

    17. 多选列表框:在Windows编程中,设置Multiselect属性为3(vbMultiSimple)允许使用Ctrl和Shift键选择多个列表项。 18. 因特网:因特网是全球性的互联网,连接了世界各地的计算机网络。 19. 面向对象的特征:...

Global site tag (gtag.js) - Google Analytics