`

用鼠标拖拉来选中checkbox

阅读更多
(function($){
	/*-----------------------------------------------------------------/
	功能:用鼠标拖拉来选中checkbox
	参数:无
	返回:原调用对象
	示例:$('#testtable').squareSelection();
	author: hushuilong
	email: hushuilong@gmail.com
	/-----------------------------------------------------------------*/	
	$.fn.squareSelection=function(){

		var container = $(this);
		var stop_pop = function(e) {
			try {
				e.stopPropagation();
			} catch(err) {
				window.event.cancelBubble = true;
			}
		};
		var box = function(){
			if($('#square_selection_box').length == 0){
				$('<div></div>',{id:'square_selection_box', style: [
					'position:absolute; top:0; left:0;',
					'border:1px solid #072246; background: #6bb0c9;',
					'filter:Alpha(Opacity=15); opacity:0.15;',
					'overflow:hidden;display:none;z-index:99999;'
				].join('')}).appendTo(document.body);
			}
			return $('#square_selection_box');
		};
		var init = function(){
			document.oncontextmenu=function(){ return false; }; 
			
			$(container).find(':checkbox').mousedown(function(e){
				stop_pop(e);
			});
			
			// mouse up
			$(document).bind('mouseup', function(event){
				
				$(container)[0].setCapture && $(container)[0].releaseCapture();
			
				if(box().css('display') != 'none') {
					var box_offset_top = box().offset().top;
					var box_offset_bottom = box().offset().top + box().height();
					$(container).find(':checkbox').each(function(i,item){
						var offset_top = $(item).offset().top;
						var offset_bottom = $(item).offset().top + $(item).height();
						if (offset_bottom >= box_offset_top && offset_top <= box_offset_bottom) {
							$(item).attr('checked',true);		
						}
					});
				}
				
				box().hide();
				$(container).unbind('mousemove');	
			});		
			// mouse down
			$(container).mousedown(function(event){
				
				event.preventDefault && event.preventDefault(); // 阻止默认行为发生
				
				$(container).find(':checkbox').attr('checked',false);
				
				var startPos = {
					top: event.clientY + $(document).scrollTop(), 
					left: event.clientX + $(document).scrollLeft()
				};

				this.setCapture && this.setCapture();	
				// mouse move
				$(container).unbind('mousemove').mousemove(function(event){
					
					document.selection && document.selection.empty(); // for ie 取消选择
					window.getSelection && window.getSelection().removeAllRanges();  // for non ie 取消选择

					var top = event.clientY + $(document).scrollTop();
					var left = event.clientX + $(document).scrollLeft();
					var endPos = {
						top:  Math.max(top,  container.offset().top), 
						left: Math.max(left, container.offset().left)
					};

					var fixedPoint = { // 设置定点
						left: endPos.left > startPos.left ? startPos.left : endPos.left,
						top: endPos.top > startPos.top ? startPos.top : endPos.top
					}; 

					var w = Math.min(Math.abs(endPos.left - startPos.left), container.offset().left + container.width() - fixedPoint.left);
					var h = Math.min(Math.abs(endPos.top - startPos.top), container.offset().top + container.height() - fixedPoint.top);

					box().show().css({left: fixedPoint.left+'px', top: fixedPoint.top+'px', width: w+'px', height: h+'px'});			
				});		
			});
		}

		init();
		return $(this);  
	};

})(jQuery);

 

 花了一个晚上研究出来的一个 jquery 插件, 用鼠标拖拉来选中 checkbox

用鼠标拖拉来选中 checkbox

用法: 在上面的红框里面点击鼠标左键(或右键),按住不动,移动鼠标 形成选区,再释放鼠标

 

 

分享到:
评论

相关推荐

    jquery 实现鼠标单击行时,选中checkbox复选框

    jquery 实现鼠标单击行时,改变行的背景颜色,选中checkbox复选框

    checkBox分别处理选中与不选中

    ### checkBox分别处理选中与不选中 在Web开发中,`checkbox`是一种常见的表单元素,用于收集用户的选择信息。通常情况下,一个`checkbox`只能代表一项选择,但可以通过设置多个`checkbox`来实现多选功能。本文将...

    checkbox鼠标拖拽框选

    5. **CSS辅助**:为了视觉上呈现选中效果,我们可能还需要一些CSS样式来标记选中的checkbox,例如添加一个类`selected`,并定义相应的样式。同时,可以使用CSS来创建拖拽时的高亮边框,提升用户体验。 6. **性能...

    checkbox多项选中及取消选中

    如果需要在多个地方同步 `checkbox` 的选中状态,可以使用 `localStorage` 或 `sessionStorage` 来存储用户的选中项。每次 `checkbox` 状态改变时,更新存储,并在页面加载时根据存储的状态恢复。 8. **CSS样式...

    JS判断是否选中checkbox

    **标题和描述**都是“JS判断是否选中checkbox”,这表明文章的主要目的是介绍如何使用JavaScript来检查一个或多个`checkbox`元素的状态(即是否被选中)。下面将详细介绍几种实现这一功能的方法,并对其进行深入解析...

    JQuery 判断checkbox是否选中,checkbox全选,获取checkbox选中值

    JQuery 判断checkbox是否选中,checkbox全选,获取checkbox选中值

    android中CheckBox加载自定义选中与未选中图片样式

    在Android开发中,CheckBox是一个常用的UI组件,用于提供两种状态的选择:选中和未选中。默认情况下,CheckBox的选中和未选中状态的图标是系统提供的,但有时为了满足应用的个性化需求,我们需要自定义这些图片样式...

    jquery checkbox 选中 取消 checkbox多选

    本文将深入探讨如何使用jQuery来实现复选框(checkbox)的选中和取消选中功能,以及如何处理多选的情况。 首先,我们需要理解HTML中的`&lt;input&gt;`元素类型为"checkbox"的基本用法。复选框用于让用户从多个选项中选择...

    用JS修改checkbox的选中状态

    在本文中,我们将深入探讨如何使用JavaScript来改变checkbox的选中状态。 首先,我们需要了解HTML中的`&lt;input&gt;`标签,它是用于创建复选框的。一个简单的复选框HTML代码如下: ```html &lt;input type="checkbox" id=...

    listview里选中CheckBox

    继承自BaseAdapter,重写`getView()`方法,在这里根据数据项的状态设置CheckBox的选中状态: ```java public class MyAdapter extends BaseAdapter { private List&lt;String&gt; items; private SparseBooleanArray ...

    循环动态判断checkbox是否被选中

    下面我们将详细探讨如何通过遍历容器(如`Panel`)中的所有子控件来判断`Checkbox`是否被选中。 #### 核心概念解释 1. **Checkbox控件**:这是一种常用的输入控件,用于收集用户的多选数据。每个`Checkbox`都可以...

    C#中获取CheckBox选中值(多选)

    在C#编程语言中,处理用户界面元素如CheckBox的选中状态是一项常见需求,尤其是在涉及多选场景时。本文将深入探讨如何在C#中有效且简洁地获取多个CheckBox控件的选中值,这对于构建响应式和用户友好的应用程序至关...

    解决ListView嵌套CheckBox滑动时选中状态错乱

    总结来说,解决ListView嵌套CheckBox滑动时的选中状态错乱问题,需要深入理解ListView的工作机制,合理利用ViewHolder,正确绑定数据,监听并处理CheckBox的状态变化,以及适当地处理点击事件。通过这些步骤,可以...

    获得选中的checkBox值

    点击按钮获取选中的CheckBox值,JQ实现,代码非常简单。

    js实现翻页后保持checkbox选中状态的实现方法

    所以checkbox为false。...把选中的checkbox中的id,其中包括模块id,操作id,拼接成一个字符串,然后把字符串传递到action中。 每次调用此页面时,首选调用action中的选中的id字符串,然后根据在id字符串的基

    遍历CheckBoxList,获得选中项的值动态绑定CheckBoxList代码

    ### 遍历CheckBoxList,获得选中项的值动态绑定CheckBoxList #### 知识点一:CheckBoxList概述及应用场景 **CheckBoxList** 是ASP.NET Web Forms中一个非常有用的控件,它允许用户选择一个或多个选项。CheckBoxList...

    jquery获取checkbox选中的值

    在本文中,我们将深入探讨如何使用jQuery来获取checkbox选中的值,包括全选、取消全选、反选以及选中奇数行的操作,并讲解如何获取选中的值。 首先,我们需要引入jQuery库。在`1.html`文件中,我们看到包含了一个名...

    巧用struts标签之checkboxlist选中默认值换行处理

    本文将深入探讨如何巧妙地处理`checkboxlist`的默认选中值以及实现换行显示。 首先,我们需要创建一个数据实体类来封装复选框的选项。例如,`CheckboxBean`类,包含`id`和`name`两个属性,分别代表复选框的唯一标识...

    CheckBox 选中效果 选中子的父自动选中,选中父的子全部选中

    ### CheckBox 选中效果:选中子的父自动选中,选中父的子全部选中 #### 背景介绍 在Web开发过程中,为了提高用户体验和简化操作流程,开发者常常需要对用户界面进行一些优化处理。其中,CheckBox控件因其在数据...

    获取GridView中Checkbox的值

    在“获取GridView中Checkbox的值”这个场景下,我们通常关注的是如何在用户交互后,如点击按钮时,获取到GridView中被选中的Checkbox对应的值。以下将详细解释如何实现这一功能。 首先,我们需要在ASP.NET页面的...

Global site tag (gtag.js) - Google Analytics