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属性获得!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值