带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();						
					}
				}			
			}
		});
	}	
}








        
保姆级教程:在紫光同创Titan2 FPGA上实现PCIe DMA,实测带宽接近理论极限 本文详细介绍了在紫光同创Titan2 FPGA上实现PCIe DMA性能调优的全过程,通过参数优化和架构设计,实测带宽达到6.91GB/s,接近理论极限。涵盖开发环境搭建、PCIe IP核定制、DMA引擎设计、驱动开发及性能调优等关键步骤,为FPGA开发者提供实用指南。 阅读详情

相关推荐

从URDF到Gazebo:一个完整的ROS2机械臂仿真与运动控制实战指南

本文提供了一个完整的ROS2机械臂仿真与运动控制实战指南。详细讲解了从URDF建模、ROS2 Control配置到Gazebo物理仿真的全流程,重点介绍了如何利用MoveIt2快速搭建高级运动规划系统,并解决实际部署中的常见问题,帮助开发者高效、安全地进行机器人算法验证与开发。

red88的博客 573

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

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

chunmeizhang_88的博客 8129

手把手教你为FPGA项目集成HyperRAM IP核:从AXI接口封装到上板调试全流程

本文详细介绍了如何为FPGA项目集成HyperRAM IP核,涵盖从AXI接口封装到上板调试的全流程。通过对比DDR3L、PSRAM和HyperRAM的性能指标,突出HyperRAM在低功耗和小封装尺寸方面的优势,并提供硬件连接、AXI4-Lite接口设计、状态机优化及调试技巧等实用内容,帮助开发者高效完成FPGA项目中的内存扩展。

weixin_32103009的博客 283

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

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

weixin_39552768的博客 3635

UOS忘记密码别慌!用LiveCD工具5分钟搞定,附命令行救援模式详细步骤

本文详细介绍了UOS系统密码遗忘时的两种解决方案:图形化LiveCD工具和命令行救援模式。针对普通用户,LiveCD工具提供5分钟快速重置密码的便捷操作;而技术人员可通过命令行深度解析系统分区挂载与密码修改流程。文章还包含安全加固建议,帮助用户预防类似问题发生。

weixin_27032989的博客 589

c语言实现语音检测vad_壹鸽技术科普·智能语音客服系统中的前端语音处理技术...

随着智能客服机器人产业的迅速发展,尤其是伴随着人工智能AI的风潮,预计在2020年我国智能客服市场将达到万亿级别。在智能客服机器人领域中对电话信道语音进行端点检测处理的应用正在不断扩展和深化。目前语音端点检测(Voice Active Detection,简称VAD)的主要任务是准确快速判决出待处理的语音信号有话还是无话,作为自动语音识别(Automatic Speech Recognition,...

weixin_36431018的博客 507

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

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

yehaocheng520的博客 5528

YOLO与ORB-SLAM3的结合:实现动态环境下的目标检测与视觉SLAM

摘要: 本文介绍如何将YOLOv5目标检测与ORB-SLAM3视觉SLAM系统结合,实现动态环境下的机器人感知与定位。内容包括:源码下载(集成项目YOLO_ORB_SLAM3)、libtorch安装(PyTorch C++支持)、编译配置(解决路径依赖问题)、ROS环境下的部署(Noetic适配),以及使用TUM数据集的测试流程(RGB-D数据关联与运行)。重点解决编译时Torch路径错误、ROS与Anaconda冲突等问题,并展示系统运行效果。该整合方案为动态场景SLAM提供目标检测能力,未来可优化检测模

FJN110的博客 960

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

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

m0_62988771的博客 2266

OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南

OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版

一键难忘的博客 2993

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

执行手眼校准有助于操作配备末端执行器(简称 “手”)的机械臂,该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准,机械臂就能准确地移动到摄像头识别的特定像素位置。这种能力是执行精确拾放任务(如分类、堆垛和分拣)的基础,即使在摄像机的确切位置和方向未知的情况下也是如此。机器人-摄像机系统有两种构型:眼在手内和眼在手外。在眼在手内构型中,摄像头直接安装在机器人手臂的末端执行器上。相反,在眼在手的构型中,摄像头固定在一个静止的物体上,机器人手臂在其视野内。

机器人控制与仿真应用 3347

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

duilib 之 事件--bubbled冒泡事件应用、通用点击事件、进入离开事件、XML样式中直接添加事件

1. box 绑定点击事件 ui::Box *pSmallVideoBox = (ui::Box*)FindControl(L"rightBox"); if (pSmallVideoBox) { auto SwitchVideo = [this](ui::EventArgs* param){ m_bSecScreenIsScale = m_bMainScre...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 972

javascritp 实现 带chekcbox功能的下拉框

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

小米粒的博客 238

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

lsw51988的博客 510

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

weixin_34097242的博客 81

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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、付费专栏及课程。

余额充值