在C/S程序开发中,想要实现类似tree或grid中ctrl和shift键多选的功能,一般底层控件都默认支持的,你不需要做什么,但在Web开发中,想要实现ctrl,shift配合鼠标的多选功能并不是一件十分容易的事情,本文将对这方面进行展开的思路讨论,并附上关键的代码片段,有兴趣的读者可以一起探讨研究。
这里我要实现一个tree和table控件的关于ctrl和shift键的多选功能,先来说tree,我的处理思路如下:
- tree中针对每个节点加上索引值,如1,2,3,……,便于提高遍历效率
- 获取之前选中的树节点,并获取索引值,标记为:istart
- 获取当前选中的树节点,并获取索引值,标记为:iend
- 如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属性获得!
分享到:
相关推荐
在传统的多选模式中,用户通常需要持续按住Ctrl键来选取不连续的项目,或者使用Shift键选取连续的项目范围。 描述中的链接指向了一个个人博客的文章,虽然没有具体的文字描述,但我们可以推测这篇文章可能介绍了一...
4. **实现Ctrl+Shift选择**:在`tableselect.js`中,我们需要监听键盘的Ctrl和Shift键,以及鼠标点击事件。当Ctrl或Shift键被按下时,记录当前选中的行,并更新选区。每次点击时,根据当前选区来改变行的选中状态。 ...
通过键盘的Shift或Ctrl键(在Windows/Linux上)或Command键(在Mac上)可以实现多选。 ### JavaScript与jQuery的交互 虽然HTML5的`<select>`可以实现基本的多选功能,但在实际应用中,我们可能需要更复杂的交互和...
4. **垂直多行选择:Shift 鼠标右键 (Win)/Option 鼠标左键 (Mac) 或鼠标中键** 在Windows上,你可以按住Shift键并用鼠标右键点击来创建垂直选区。在Mac上,使用Option键加鼠标左键,或者直接使用鼠标中键拖动。...
列表框控件的测试方法包括条目内容正确、列表框的内容较多时要使用滚动条、列表框允许多选时要分别检查 shift 选中条目、按 ctrl 选中条目和直接用鼠标选中多项条目的情况等。 滚动条控件的测试方法包括滚动条的...
同时,要考虑多选和取消选中的功能,这可能需要用到`shift`键或`ctrl`键的组合。此外,性能优化也是关键,大量元素的选中可能导致重绘频繁,应当避免不必要的计算和更新。 源码分析可以帮助我们更深入地理解这一...
本文主要涵盖了计算机二级等级考试中的多项选择题及其答案,涉及了多个计算机基础知识和Web开发相关的知识点。 1. HTTP协议是在传输层协议TCP之上的应用层协议,用于传输网页和其他互联网资源。 2. Model1体系结构...
4. **样式和交互**:定制控件的外观,确保多选状态的视觉反馈清晰,同时处理好键盘和鼠标交互,如Ctrl+点击多选、Shift+点击范围选择等。 5. **值获取**:在提交表单或触发其他操作时,从ComboBox或CheckBoxList中...
8. **列表框多选** - 若要在列表框中启用使用Ctrl和Shift键进行多选,应将Multiselect属性设置为3,即EXTENDED。 9. **保留字** - 保留字是编程语言中预定义的、具有特殊含义的词汇,不能用作变量或函数名。B选项中...
- 在打开Excel后,通过 “文件” > “打开” 选择多个文件,使用 `Ctrl` 键进行多选。 **12. 快速切换工作簿** - 使用任务栏预览功能快速切换已打开的工作簿。 - 使用快捷键 `Ctrl + Tab` 或者 `Ctrl + Page Up/...
9. 列表框多选设置:在VB或类似的编程环境中,设置Multiselect属性为2(vbMultiSimple)允许使用Ctrl和Shift键进行多选。 10. MIDI和WAV音频文件:MIDI文件存储音乐指令,而WAV是波形音频文件,两者都是计算机音频...
通常,你需要启用`SelectionMode`为`MultiSimple`或`MultiExtended`,并可能需要配合`Shift`或`Ctrl`键来实现多选。 六、自定义列表框 为了满足更复杂的需求,开发者可能会扩展列表框控件的功能,比如添加搜索功能...
11. **一次性打开多个工作簿**:使用“文件”菜单中的“打开”命令,按住Ctrl键多选文件。 12. **快速切换工作簿**:利用任务栏预览或使用Alt+F6快捷键。 13. **选定超级链接文本**:按Ctrl键点击超级链接,或使用...
- 按>键、Enter键和Ctrl+Shift+;键都不会使左边单元格变为当前单元格。 12. Excel文件保存类型: - 可以保存为一般工作表文件,扩展名为.XLS。 - 可以保存为文本文件,扩展名为.TXT。 - 也可以保存为其他格式如...
- 添加键盘快捷键支持,如Ctrl或Shift键进行多选。 - 提供API以供外部控制选区,例如设置初始选区、获取当前选区内的元素等。 - 添加动画效果,使框选过程更流畅。 - 考虑不同浏览器的兼容性问题,确保在各种环境下...
4. 多选模式:允许用户通过Shift键或Ctrl键进行连续或不连续的多选。 5. 事件触发:提供自定义事件,如`select`或`deselect`,让其他代码可以监听单元格的选择变化。 六、应用示例 在实际项目中,我们可以这样使用...
Sublime Text是一款备受程序员喜爱的轻量级、高效且高度可定制的文本编辑器,尤其在HTML和Web开发领域中广泛应用。它以其丰富的特性、快捷的操作以及强大的插件生态系统赢得了广泛的赞誉。以下是对Sublime Text在...
至于禁用键盘上的Shift、Ctrl和Alt键,这些通常是用来触发特殊功能的,如多选、打开新窗口或执行快捷键操作。在JavaScript中,我们可以通过监听`keydown`事件来实现: ```javascript document.onkeydown = function...
2. **多条数据拖拽**:在Grid控件中实现多选数据拖拽,通常需要在选择模式上进行设置,允许用户通过Ctrl或Shift键选择多行。拖动过程中,需收集所有选定行的数据,并在拖放目标上显示相应的视觉反馈。 3. **多个或...
17. 多选列表框:在Windows编程中,设置Multiselect属性为3(vbMultiSimple)允许使用Ctrl和Shift键选择多个列表项。 18. 因特网:因特网是全球性的互联网,连接了世界各地的计算机网络。 19. 面向对象的特征:...