一、HTML多选下拉框代码及基本属性
HTML多选下拉框可以让用户在一个下拉列表中选择多个选项,相对于单选下拉框而言,更加灵活和方便,因此在网页开发中应用广泛。以下为示例代码:
<select multiple="multiple">
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
其中,multiple="multiple"
属性表示该下拉框支持多选,选项之间用逗号分隔。每个选项使用<option>
标签表示,value
属性为选项的值,选中后提交表单会提交该值;显示在页面上的选项名称应该在该标签对中间添加。
要设置默认选中的选项,可以在<option>
标签中添加selected
属性。
二、HTML下拉框多选的实现方法
HTML本身是不支持多选下拉框的,所以需要借助JavaScript的力量来实现。以下是一种简单的实现方法:
<select id="testSelect" onchange="updateTextArea()">
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
<br>
<input type="hidden" id="testInput" name="testInput">
<textarea id="testArea" rows="3"></textarea>
<script type="text/javascript">
function updateTextArea(){
var selectedValues = "";
var selectedTexts = "";
var selectObj = document.getElementById("testSelect");
for(var i = 0; i < selectObj.options.length; i++){
if(selectObj.options[i].selected){
selectedValues += selectObj.options[i].value + ",";
selectedTexts += selectObj.options[i].text + ", ";
}
}
// 去除最后的逗号
selectedValues = selectedValues.substring(0, selectedValues.length - 1);
selectedTexts = selectedTexts.substring(0, selectedTexts.length - 2);
document.getElementById("testInput").value = selectedValues;
document.getElementById("testArea").value = selectedTexts;
}
</script>
实现原理:首先给<select>
标签添加onchange
事件,每当用户选择或取消选项时触发该事件。在事件处理函数中,遍历所有选项,将选中的选项的值和文本内容分别拼接成一个字符串,最后将这两个字符串分别赋值给一个隐藏域和一个<textarea>
标签。
三、HTML多选下拉框带复选框的实现方法
为了提高可用性,有些多选下拉框会在每个选项前面添加一个复选框,用户只需要勾选需要的选项即可。以下是一种实现方法:
<div id="selectDiv">
<input type="text" readonly class="input-text" style="width:250px;" placeholder="请选择" onclick="showSelect()">
<ul id="selectUl" class="select">
<li><label><input type="checkbox" value="1">选项1</label></li>
<li><label><input type="checkbox" value="2">选项2</label></li>
<li><label><input type="checkbox" value="3">选项3</label></li>
</ul>
</div>
<script type="text/javascript">
function showSelect(){
var divObj = document.getElementById("selectDiv");
var ulObj = document.getElementById("selectUl");
if(ulObj.style.display == "block"){
ulObj.style.display = "none";
} else {
ulObj.style.width = divObj.offsetWidth - 2 + "px";
ulObj.style.display = "block";
}
}
</script>
实现原理:首先将<select>
标签换成一个<input>
标签,该标签用于显示用户已选择的选项名称;在下拉框中添加一个标签,每个选项用标签表示,并且在每个选项前添加一个<input type="checkbox">
标签。当用户点击<input>
标签时,显示下拉框,当用户勾选/取消勾选一个选项时,通过JavaScript动态修改<input>
标签显示的内容。
四、layui多选下拉框的使用方法
layui是一款开源的前端UI框架,提供了一种简单易用的多选下拉框组件。以下是使用示例:
<select xm-select="demo">
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
<script type="text/javascript" src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script>
<script type="text/javascript">
layui.use(['form', 'layer', 'jquery'], function() {
var form = layui.form;
form.render('select');
});
</script>
实现原理:首先在<select>
标签中添加xm-select="demo"
属性,它表示将该下拉框转换成多选下拉框组件,demo
是这个组件的唯一标识。在页面加载完成后,通过layui.use()
方法依次加载form
、layer
和jquery
三个模块,并调用form.render()
方法将<select>
标签转换成多选下拉框组件,从而实现多选下拉框的功能。
五、HTML下拉框选择怎么设置
HTML下拉框选择通常有两种方式:一是使用鼠标点击下拉框箭头,弹出选项列表,再点击选项名称选中;二是使用键盘上下箭头选择选项,回车键确定选择。以下是示例代码:
<select name="testSelect">
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
其中,第一种方式是HTML自带的功能,无需任何JavaScript代码;第二种方式需要用到JavaScript,示例代码如下:
<script type="text/javascript">
var selectIndex = 0;
var selectObj = document.getElementsByName("testSelect")[0];
// 用户按下了键盘上下箭头
document.onkeydown = function(event){
var e = event || window.event;
switch(e.keyCode){
// 上箭头
case 38:
selectIndex--;
if(selectIndex < 0){
selectIndex = selectObj.options.length - 1;
}
selectObj.options[selectIndex].selected = true;
break;
// 下箭头
case 40:
selectIndex++;
if(selectIndex > selectObj.options.length - 1){
selectIndex = 0;
}
selectObj.options[selectIndex].selected = true;
break;
// 回车键
case 13:
alert("你选择了:" + selectObj.options[selectIndex].text);
break;
}
}
</script>
实现原理:首先获取<select>
标签对象和选项的个数,然后监听document
对象的onkeydown
事件,如果用户按下了上下箭头键或回车键则触发该事件。按上箭头时,将选项索引向上减1,如果减到0,则将索引指定为选项个数减1;按下箭头时,将选项索引向下加1,如果超过选项个数,则将索引指定为0;按回车键时,弹出一个消息框,显示选择的选项名称。
六、HTML下拉框默认值选取
HTML下拉框的默认选项可以通过在<option>
标签中添加selected
属性来实现,如下所示:
<select name="testSelect">
<option value="1">选项1</option>
<option value="2" selected>选项2</option>
<option value="3">选项3</option>
</select>
以上代码中,第二个选项<option value="2" selected>选项2</option>
是默认选中的选项,因为它添加了selected
属性。同样地,如果要选择多个默认选项,则可以在多个<option>
标记中添加selected
属性。
七、HTML多选下拉框的示例代码
最后,将前面的多个示例代码结合起来,得到一个完整的HTML多选下拉框示例代码如下:
<select id="testSelect" multiple="multiple">
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
<input type="hidden" id="testInput" name="testInput">
<textarea id="testArea" rows="3"></textarea>
<div id="selectDiv">
<input type="text" readonly class="input-text" style="width:250px;" placeholder="请选择" onclick="showSelect()">
<ul id="selectUl" class="select">
<li><label><input type="checkbox" value="1">选项1</label></li>
<li><label><input type="checkbox" value="2">选项2</label></li>
<li><label><input type="checkbox" value="3">选项3</label></li>
</ul>
</div>
<script type="text/javascript">
var selectIndex = 0;
var selectObj = document.getElementById("testSelect");
function updateTextArea(){
var selectedValues = "";
var selectedTexts = "";
for(var i = 0; i < selectObj.options.length; i++){
if(selectObj.options[i].selected){
selectedValues += selectObj.options[i].value + ",";
selectedTexts += selectObj.options[i].text + ", ";
}
}
// 去除最后的逗号
selectedValues = selectedValues.substring(0, selectedValues.length - 1);
selectedTexts = selectedTexts.substring(0, selectedTexts.length - 2);
document.getElementById("testInput").value = selectedValues;
document.getElementById("testArea").value = selectedTexts;
}
function showSelect(){
var divObj = document.getElementById("selectDiv");
var ulObj = document.getElementById("selectUl");
if(ulObj.style.display == "block"){
ulObj.style.display = "none";
} else {
ulObj.style.width = divObj.offsetWidth - 2 + "px";
ulObj.style.display = "block";
}
}
document.onkeydown = function(event){
var e = event || window.event;
switch(e.keyCode){
// 上箭头
case 38:
selectIndex--;
if(selectIndex < 0){
selectIndex = selectObj.options.length - 1;
}
selectObj.options[selectIndex].selected = true;
break;
// 下箭头
case 40:
selectIndex++;
if(selectIndex > selectObj.options.length - 1){
selectIndex = 0;
}
selectObj.options[selectIndex].selected = true;
break;
// 回车键
case 13:
alert("你选择了:" + selectObj.options[selectIndex].text);
break;
}
}
</script>