带chekcbox功能的下拉框

antd多选下拉框一行展示的实现方式 我们都知道antd的select多选时,如果下拉框宽度不足,则自动浮动到下一行将下拉框撑大,但是这回影响到页面的整体布局。 我们期望的效果是,下拉框只显示一行的值,超出一行的部分自动隐藏。 下面有2种方案来实现这个效果。 1.利用浮动原理 设置下拉框的最大高度为一行的高度,然后超出的部分隐藏。 .ant-select-selection--multiple { max-height: 32px; overflow: hidden; } 这种方式存在的弊端是如果有2个选项,一个很短一个很长,那么只能看到很短的值,长值被隐藏,会剩余很大的空白。 2.flex布局 立即下载

最近在做项目中需要用到带Checkbxo的下拉框,如下图所示:

HTML页面代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>带全选功能的下拉框</title>
<style type="text/css">
	.checkboxselect-container{border:1px solid #33CCFF;
		//visibility:visible;
		visibility:hidden;
		background:white;}
	.checkboxselect-item{padding:3px 2px;}
	.checkboxselect-active{background:#33CCFF;color:white;padding:3px 2px;}	
</style>
<script type="text/javascript" src="checkboxSelect.js"></script>
<script type="text/javascript">
	window.onload = function(){	
		var checkboxSelect = new CheckboxSelect({
			input:document.getElementById('checkboxSelect'),
			hiddeninput:document.getElementById('hiddencheckboxSelect'),
			width:150,
			opacity:0.9,
			data:['北京','上海','南京'],
		});		
	}
</script>
</head>
<body>
	所选地区:<input type="text" id="checkboxSelect" name="checkboxSelect" style="width: 250px;"></input>
	所选地区所对应的ID值:<input type="text" id="hiddencheckboxSelect" name="hiddencheckboxSelect" style="width:250px;"></input>
	<br/>
</body>
</html>
checkboxSelect.js代码:
/**
 * JavaScript CheckboxSelect v0.1
 * Copyright (c) 2012 fly2004jun
 * Blog: http://blog.youkuaiyun.com/fly2004jun
 * Date: 2012-07-02
 * Licensed under the MIT:http://www.opensource.org/licenses/mit-license.php
 * 转载请保留原始版权信息
 * 
 * 描述:模仿select,对下拉选项添加Checkbox框。
 * new CheckboxSelect({
 * 	  input 		HTMLInputElement 必选,需要绑定的input
 * 	  hiddeninput   HTMLInputElement 可选,需要接收所勾选项id的input,为通过AJAX获取键值对准备 v0.2实现
 * 	  data 			Array ['北京','上海','安徽','吉林'] 必选
 * 	  containerCls	容器className 可选,默认值checkboxselect-container
 * 	  itemCls		容器子项className 可选,默认值checkboxselect-item
 * 	  activeCls		高亮子项className 可选,默认值checkboxselect-active
 * 	  width 		宽度设置 此项将覆盖containerCls的width 可选
 *    opacity		透明度设置 此项将覆盖containerCls的opacity 可选
 *    arrayUrl		通过Url获取数组格式数据,v0.2实现
 *    jsonUrl		通过Url获取JSON格式数据,v0.2实现
 * });
 */
 
Array.prototype.indexOf = function(val) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == val) return i;
    }
    return -1;
};
Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
        this.splice(index, 1);
    }
};
 
 /**
 *
 * CheckboxSelect构造类
 */
function CheckboxSelect(opt){
	this.win = null;   
	this.doc = null;	
	this.container = null;
	this.items = null;
	this.input = opt.input || null;
	this.hiddeninput = opt.hiddeninput || null;
	this.containerCls = opt.containerCls || 'checkboxselect-container';
	this.itemCls = opt.itemCls || 'checkboxselect-item';
	this.activeCls = opt.activeCls || 'checkboxselect-active';
	this.width = opt.width;
	this.opacity = opt.opacity;
	this.data = opt.data || [];
	this.checkboxdata = [];  //数组保存选中项的值
	this.arrayUrl = opt.arrayUrl || null;
	this.jsonUrl = opt.jsonUrl || null;
	this.active = null;
	this.visible = false;
	this.init();
}

CheckboxSelect.prototype = {
	init: function(){
		this.win = window;
		this.doc = window.document;
		//构造一个DIV元素
		this.container = this.$C('div');
		//设置div的样式
		this.attr(this.container, 'class', this.containerCls);
		//将div附在DOM文档中
		this.doc.body.appendChild(this.container);
		//设置div属性
		this.setPos();
		var _this = this, input = this.input,container = this.container;	
		this.on(input,'click',function(e){
			_this.onClick(e);
		});		
		this.onMouseover();
		this.onMousedown();
		// blur会在click前发生,元素失去焦点
		this.on(container,'blur',function(e){
			_this.hide();			
		});			
	},
	$C: function(tag){
		return this.doc.createElement(tag);
	},
	getPos: function (el){
		var pos=[0,0], a=el;
		//获取页面元素的位置
		if(el.getBoundingClientRect){
			//左、上、右、下
			var box = el.getBoundingClientRect();
			pos=[box.left,box.top];
		}else{
			//遍历根元素
			while(a && a.offsetParent){
				pos[0] += a.offsetLeft;
				pos[1] += a.offsetTop;
				a = a.offsetParent
			}			
		}
		return pos;
	},	
	setPos: function(){
		var input = this.input,
			//获得当前input元素所在位置坐标。
			pos = this.getPos(input), 
			//获得浏览器类型
			brow = this.brow, 
			//获得宽度
			width = this.width,
			//获得透明度
			opacity = this.opacity,
			//获得新增的div元素
			container = this.container;
			//直接付给他CSS样式省去了定义CSS的步骤
			container.style.cssText =
				'position:absolute;overflow:hidden;background:white;left:' 
				+ pos[0] + 'px;top:'
				//offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
				+ (pos[1]+input.offsetHeight) + 'px;width:'
				// IE6/7/8/9/Chrome/Safari input[type=text] border默认为2,Firefox为1,因此取offsetWidth-2保证与FF一致
				+ (brow.firefox ? input.clientWidth : input.offsetWidth-2) + 'px;';
		if(width){
			container.style.width = width + 'px';
		}
		if(opacity){
            if(this.brow.ie){
                container.style.filter = 'Alpha(Opacity=' + opacity * 100 + ');';
            }else{
                container.style.opacity = (opacity == 1 ? '' : '' + opacity);
            }			
		}
	},
	show: function(){
		this.container.style.visibility = 'visible';
		this.visible = true;
	},
	hide: function(){
		this.container.style.visibility = 'hidden';
		this.visible = false;	
	},
	attr: function(el, name, val){
		if(val === undefined){
			return el.getAttribute(name);
		}else{
			el.setAttribute(name,val);
			name=='class' && (el.className = val);	
		}
	},
    on: function(el, type, fn){
    	el.addEventListener ? el.addEventListener(type, fn, false) : el.attachEvent('on' + type, fn);
    },
    un: function(el, type, fn){
    	el.removeEventListener ? el.removeEventListener(type, fn, false) : el.detachEvent('on' + type, fn);
    },
	brow: function(ua){
		return {
			ie: /msie/.test(ua) && !/opera/.test(ua),
			opera: /opera/.test(ua),
			firefox: /firefox/.test(ua)
		};
	}(navigator.userAgent.toLowerCase()),
	createXMLHttpRequest: function(){  
		if (window.ActiveXObject) {  
			return  new ActiveXObject("Microsoft.XMLHTTP");  
		}  
		else if (window.XMLHttpRequest) {  
			return new XMLHttpRequest();  
		}  
	},	
	onClick:function(e){
		var container = this.container, input = this.input, iCls = this.itemCls, aCls = this.activeCls,checkboxdata = this.checkboxdata ,hiddeninput = this.hiddeninput;
		this.win = window; 
		this.doc = window.document;
		this.items = [];
		if(this.data.length>0){
			this.container.innerHTML = '';
			//循环增加子项并设置样式
			for(var i=0,len=this.data.length;i<len;i++){
				var item = this.$C('div');
				this.attr(item, 'class', this.itemCls);
				var tempinput = this.$C('input');
				tempinput.type = 'checkbox';
				tempinput.value = this.data[i];
				this.on(tempinput,'click',function(e){
					var target = e.target || e.srcElement;
					if(target.checked){
						checkboxdata.push(target.value);
						input.value = checkboxdata.toString();
						if(hiddeninput)
							hiddeninput.value = checkboxdata.toString();
					}else{
						if(checkboxdata.length>0)
							checkboxdata.remove(target.value)
						input.value = checkboxdata.toString();
						if(hiddeninput)
							hiddeninput.value = checkboxdata.toString();
					}
				});
				//判断是否有初始选中
				if(checkboxdata.length>0){
					for(var t=0;t<checkboxdata.length;t++){
						if(checkboxdata[t] === this.data[i])
							tempinput.checked = true;
					}						
				}
				item.appendChild(tempinput);
				item.appendChild(this.doc.createTextNode(this.data[i]))
				this.items[i] = item;
				this.container.appendChild(item);
			}
			this.show();
		}		
	},
	onMouseover: function(){
		var _this = this, icls = this.itemCls, acls = this.activeCls;
		this.on(this.container,'mouseover',function(e){
			var target = e.target || e.srcElement;
			if(target.className == icls){
				if(_this.active){
					_this.active.className = icls;					
				}
				target.className = acls;
				_this.active = target;

			}
		});
	},
	onMousedown: function(){
		var _this = this ;
		var container = this.container, input = this.input, iCls = this.itemCls, aCls = this.activeCls,checkboxdata = this.checkboxdata ,hiddeninput = this.hiddeninput;		
		this.on(this.container,'mousedown',function(e){
			var target = e.target || e.srcElement;
			//首先判断target是何种类型
			if(target.type === 'checkbox'){
			}else{
				if(container.childNodes.length>0){
					if(target.childNodes[0].checked){
						//如果第一个节点Checkbox是选中状态,则取消选中
						target.childNodes[0].checked = false;
						if(checkboxdata.length>0)
						checkboxdata.remove(target.childNodes[1].nodeValue)
						input.value = checkboxdata.toString();
						if(hiddeninput)
							hiddeninput.value = checkboxdata.toString();						
					}
					else{
						//如果第一个节点Checkbox是未选中状态,则选中
						target.childNodes[0].checked = true;
						checkboxdata.push(target.childNodes[1].nodeValue);
						input.value = checkboxdata.toString();	
						if(hiddeninput)
							hiddeninput.value = checkboxdata.toString();						
					}
				}			
			}
		});
	}	
}








        
rosbag分析传感器数据的时间同步情况方法 ROS传感器时间同步分析流程:通过rosbaginfo初步检查bag文件信息,使用rqt_bag可视化时间线分布,采用rostopicecho或Python脚本提取各传感器时间戳并计算时间差统计值(均值/最大差/标准差),最后分析接收与采样时间延迟。量化评估同步精度,识别固定偏移或随机抖动问题,确保多传感器数据对齐,为后续融合处理提供可靠数据基础。 阅读详情

相关推荐

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2206

antd Select自定义下拉选项和回填

react antd Select自定义下拉选项和回填option

chunmeizhang_88的博客 8129

Visual Studio Git 使用指南

Visual Studio 2022深度集成了Git功能,提供了直观的图形界面管理源代码。本文详细介绍了VS中Git的使用方法:从环境准备、克隆/创建仓库开始,重点讲解了"Git更改"窗口的日常操作,包括查看修改、暂存文件、提交推送等。同时涵盖了分支管理、查看历史、解决冲突等核心功能,以及储藏、重置等高级操作。文章还提供了实用技巧,如提交规范、频繁提交等最佳实践。VS的Git集成覆盖了日常开发需求,图形界面与命令行可互补使用,适合各层次开发者高效管理代码版本。

guigenyi的专栏 1566

antd checkbox 默认选中_antd-Checkbox多选操作

在项目中遇到了需要有多选操作的功能,刚开始的时候以为挺简单的,但是随着项目的深入,发现并不是想象的那么简单。下面就说一说我遇到的一些问题吧:1、将后端接口的数据变成多选项:思路:就是将所有的要展示数据重新整理,最后变成一个新的list放到CheckboxGroup的option里面去。例如[‘选项1’,‘选项2’,‘选项3’]。2、在勾选项中加入ID:按照上面的例子,我每次勾选能获取到我勾选的内容...

weixin_39552768的博客 3635

AI工程化之生成式UI & A2UI(二)

本文介绍了生成式UI框架A2UI的架构设计与核心实现。项目采用AI协作开发模式,通过ATDD(AI驱动的测试驱动开发)确保代码质量。前端SDK基于zustand实现框架无关的状态管理,包含协议解析器、存储管理、渲染器等核心模块。重点展示了基础store构建、A2UI协议解析器的实现过程,包括mock数据准备、测试用例生成和可视化调试。项目采用monorepo管理,利用vite实现高效开发构建。整个系统设计遵循模块化原则,通过清晰的接口定义实现各组件解耦,为后续功能扩展打下基础。

qq_34306228的博客 406

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

antd——封装select下拉框组件——解决数据量巨大时下拉框渲染缓慢的问题——基础积累

antd——封装select下拉框组件——解决数据量巨大时下拉框渲染缓慢的问题

yehaocheng520的博客 5528

STM32CubeMX + HAL库避坑指南:为什么你的代码总在SystemClock_Config卡住?

本文深入剖析了STM32开发者在使用STM32CubeMX和HAL库时,代码在SystemClock_Config函数中卡死的根本原因。文章不仅指出硬件时序、Flash延迟配置等常见陷阱,更提供了从硬件设计、软件容错到深度调试的系统性解决方案,帮助开发者构建鲁棒的时钟初始化策略,彻底告别启动卡顿问题。

bb456的博客 928

el-select 自定义样式,插槽内添加复选框样式

*参考el-select多选对号样式实现checkbox中对号的样式*/placeholder="请选择"/*参考el-checkbox实现checkbox样式*//*清空原来的多选框样式*//*设置置灰内容样式*/

m0_62988771的博客 2266

Android逆向实战:抖音聊天记录数据库解析与导出(附完整SQL查询)

本文提供了一份Android逆向实战指南,详细解析了抖音聊天记录数据库的结构与导出方法。通过定位核心的`im.db`数据库文件,深度解读conversation_list、msg等关键表结构,并附上完整的SQL查询语句,帮助开发者或研究人员安全、合规地提取和分析本地聊天数据,适用于移动安全研究与数据分析场景。

mango的博客 855

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

antd checkbox的使用

antd checkbox的使用 1、勾选时拿到的勾选数据和复选框后展示的数据一致 即:引用antd官网的案例 const plainOptions = ['Apple', 'Pear', 'Orange']; const defaultCheckedList = ['Apple', 'Orange']; class App extends React.Component { state = { checkedList: defaultCheckedList, indetermina

qq_42582339的博客 1950

Android 14.0 SystemUI状态栏居中显示时间和修改时间显示样式

在14.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了

安卓兼职framework和app工程师的博客 978

javascritp 实现 带chekcbox功能的下拉框

 首先设置初始下拉框内容为隐藏的,点击&lt;请选择&gt;执行changeR方法 changR方法里运用 switch 并设置 标志 初始为1,在1的情况下 让下拉框内容循环显示   并将标志位设置为0  在标志为0时;四次内容循环,获取复选框是否被选中 如果被选中将value 的值传到第一行里 并再次将将标志设为1  循环隐藏·掉 &lt;html&gt; &lt;head&gt; ...

小米粒的博客 238

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Extjs如何设置chekcbox选中,并且不可编辑。

Ext.getCmp(value).setValue(true); Ext.getCmp(value).readOnly=true;

lsw51988的博客 510

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Javascript 返回上一页:选中GridVIew的 Chekcbox

1. 选中GridVIew的值 $("#reverse").click(function () { //$("#checkbox[Num]").attr("checked",!($("#checkbox[Num]").attr("checked"))); var checkboxs = $("#checkbox[Num]");...

weixin_34097242的博客 81

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Tekla二次开发实战:高效拆分与合并梁的自动化实现

本文详细介绍了Tekla二次开发在钢结构设计中的自动化应用,重点讲解如何通过C#编程实现梁的高效拆分与合并。通过实战案例展示自动化脚本如何将原本耗时数周的手动操作缩短至几小时,大幅提升工程效率,特别适合处理大型厂房等复杂钢结构项目。

weixin_30369041的博客 399

【第三章-react 应用(基于 react 脚手架)】

1.脚手架: 用来帮助程序员快速创建一个基于 xxx 库的模板项目;2. 提供了一个用于创建 项目的脚手架库: ; 3.项目的整体技术架构为:; 4.使用脚手架开发的项目的特点:模块化,组件化,工程化。创建项目成功: 页面效果: favicon.icon ------ 网站页签图标(偏爱图标) index.html --------主页面 logo192.png ------- logo 图 logo512.png ------- logo 图 manifest.json ----- 应用加壳的配置文件

nunumaymax的博客 489

原生js 写input 框,全选 -- 反选

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title

weixin_45379180的博客 548

checkbox全选

checkbox全选。

Roy__Jason的博客 291

工作小计:关于jquery复选框的ckeckbox的值改变

业务需求,需要再前端页面增加复选框,jsp页面,使用的是jquery代码如下,发现实际效果只有第一次可以生效,后面点击全选没有效果 /** * 全选 */ function checkAll() { $("input[name=ids]").attr("checked", true); } /** * 全不选...

weixin_33991727的博客 196

input chechbox选中

String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>       ">          My JSP 'b.jsp' start

u012325112的博客 380

PyGobject(四十一)布局容器之Box

在前面的文章中,所讲的布局容器全部是Gtk.Bin的子类,就是说都是单孩子容器。接下来的篇幅将会介绍多孩子容器。它们都是Gtk.Container的子类,单不是Gtk.Bin的子类 Gtk.Box盒子布局,允许孩子从左到右或者从上到下的排布。 它有两个子类,Gtk.HBox(水平布局)和Gtk.VBox(垂直布局)

Yu的专栏 1634

jquery checkbox多选最简单的写法

$('#chks').change(function(){ $('.chk_p').attr('checked',$(this).attr('checked')); });  全选

fyqaccpt96的专栏 711

Datatables里面checkbox选中问题

最近在学习jquery 里面的DataTables.在里面碰到了checkbox 选中问题;特总结如下: $(function() { $("#all").click(function() { $("input[name='sh']").attr("checked",this.checked); }); }); 不知道是什么原因,使用 $("input[name='sh']"

y3wegy的专栏 1万+

关于设置input_checbox大小的方法(兼容问题)

针对input_checkbox在火狐和欧朋浏览器中不支持的问题

超级兵团的博客 5775
上一篇: JAVA实现简单的单点登录
下一篇: jquery的slideUp、slideDown函数在IE中的bug
fly2004jun
博客等级 码龄18年 16粉丝 12原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值