不按Ctrl键实现select标签多选操作

本文介绍了一个使用HTML和JavaScript实现的下拉菜单示例,包括如何初始化选择项、显示和隐藏下拉框以及获取和设置选项值等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html onclick="hide();">
<body>
	<div onclick="show(event);">
		<div id="r">选取结果</div>
		<div id="s" style="position: absolute; display: none; z-index: 1;">
			<select id="sr" multiple="multiple" style="width: 100px;" onclick="oSele_onclick(this);">
				<option value="volvo">volvo</option>
				<option value="saab">saab</option>
				<option value="opel">opel</option>
				<option value="audi">audi</option>
			</select>
		</div>
	</div>
	<script>
		var arr = new Array();
		//初始选项值和方法	开始
		var initText = "saab,opel";
		function init() {
			var oSele = document.getElementById("sr");
			var str = initText;
			for (i = 0; i < oSele.length; i++) {
				if (("," + str + ",").indexOf("," + oSele.options[i].text + ",") != -1) {
					oSele.options[i].selected = true;
					arr[i] = oSele.options[i].value;
				} else {
					arr[i] = "";
				}
			}
		}
		init();
		//初始选项值和方法	结束

		//隐藏下拉框
		function hide() {
			document.getElementById("s").style.display = "none";
			console.log(selectMultiple("sr"));
			document.getElementById("r").innerHTML = selectMultiple("sr");
		}

		//显示下拉框
		function show(e) {
			e.stopImmediatePropagation();//阻止冒泡事件发生
			document.getElementById("s").style.display = "";
		}

		//获取选项值
		function selectMultiple(id) {
			var oSele = document.getElementById(id);
			var str = "";
			for (i = 0; i < oSele.length; i++) {
				if (oSele.options[i].selected) {
					str += oSele.options[i].value + ",";
				}
			}
			if (str == "") {
				return "请选择";
			} else {
				return str.substr(0, str.length - 1);
			}
		}

		//获取数组值
		function arrayString(str) {
			var str = "";
			for (i = 0; i < arr.length; i++) {

				str += arr[i] + ",";

			}
			return str
		}

		//设置选项值
		function oSele_selected(oSele) {
			var str = arrayString(arr);
			for (i = 0; i < oSele.length; i++) {
				if (("," + str).indexOf("," + oSele.options[i].text + ",") != -1) {
					oSele.options[i].selected = true;
				} else {
					oSele.options[i].selected = false;
				}
			}
		}

		//点击事件
		function oSele_onclick(oSele) {
			var i = oSele.selectedIndex;

			if (arr[i] == undefined || arr[i] == "") {
				arr[i] = oSele.value;
			} else {
				arr[i] = "";
			}

			oSele_selected(oSele);
		}
	</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值