如何利用CSS3和JS实现多功能选择框?


一、使用HTML创建多项选择框

1、基本语法:使用<select>标签并添加multiple属性来创建一个多项选择框,每个选项由<option>标签定义。

css3 js 多项选择框css3 js 多项选择框

   <select id="choices" name="choices" multiple>
     <option value="option1">选项1</option>
     <option value="option2">选项2</option>
     <option value="option3">选项3</option>
     <option value="option4">选项4</option>
   </select>

2、表单提交:在表单中使用时,当用户提交表单时,所有选中的选项将以数组的形式发送到服务器。

如何利用CSS3和JS实现多功能选择框?

二、CSS自定义多项选择框样式

1、基础样式:可以通过CSS设置多项选择框的宽度、高度、边框、字体大小等基本外观属性。

   select {
     width: 200px;
     height: 100px;
     border: 1px solid #ccc;
     font-size: 16px;
     padding: 5px;
   }

2、高级样式:利用伪元素、动画等技术进一步美化选择框。

   select {
     width: 200px;
     height: 100px;
     border: 2px solid #4CAF50;
     font-size: 16px;
     padding: 5px;
     background-color: #f9f9f9;
     transition: border-color 0.3s;
   }
   select:hover {
     border-color: #45a049;
   }

三、JavaScript操作多项选择框

1、获取选中的值:通过JavaScript可以获取用户选择的值并进行相应操作。

   document.getElementById('choices').addEventListener('change', function() {
     const selectedOptions = Array.from(this.selectedOptions).map(option => option.value);
     console.log(selectedOptions);
   });

2、处理选择的值:获取选择的值后,可以用于动态更新页面内容、发送数据到服务器等。

   function handleSelection() {
     const selectedOptions = Array.from(document.getElementById('choices').selectedOptions).map(option => option.value);
     alert('你选择了:' + selectedOptions.join(', '));
   }
   document.getElementById('choices').addEventListener('change', handleSelection);

3、动态添加选项:还可以使用JavaScript动态地向多项选择框中添加选项。

css3 js 多项选择框css3 js 多项选择框

   function addOption() {
     const selectElement = document.getElementById("mySelect");
     const optionElement = document.createElement("option");
     optionElement.value = "option6";
     optionElement.text = "选项6";
     selectElement.appendChild(optionElement);
   }

四、使用jQuery插件实现更丰富的功能

1、multiple-select.js插件:该插件提供了更多功能,如搜索框、全选/取消全选按钮等,使用方法如下:

HTML代码

     <select id='checkedLevel' style="width:120px;height:28px;" multiple="multiple">
       <option value="1">选项1</option>
       <option value="2">选项1</option>
       <option value="3">选项1</option>
       <option value="4">选项1</option>
       <option value="5">选项1</option>
       <option value="6">选项1</option>
       <option value="7">选项1</option>
     </select>

JS代码

     $('#checkedLevel').multipleSelect({
       addTitle: true, //鼠标点悬停在下拉框时是否显示被选中的值
       selectAll: false, //是否显示全部复选框,默认显示
       name: "质控级别",
       selectAllText: "选择全部", //选择全部的复选框的text值
       allSelected: "全部", //全部选中后显示的值
       placeholder: "质控级别" //不选择时下拉框显示的内容
     });
     //设置默认选中:其中数组中多个值用逗号分隔,值是option的value
     $("#checkedLevel").multipleSelect('setSelects', [1001,1002]);

2、fSelect插件:另一种轻量级的jQuery插件,可用于创建美观的多项选择框,使用方法如下:

HTML代码

     <select id="organId" name="organId" multiple="multiple">
       <option value="1">选项1</option>
       <option value="2">选项1</option>
       <option value="3">选项1</option>
       <option value="4">选项1</option>
       <option value="5">选项1</option>
       <option value="6">选项1</option>
       <option value="7">选项1</option>
     </select>

CSS文件:需要引入相应的CSS文件来定义样式。

css3 js 多项选择框css3 js 多项选择框

JS代码:在文档加载完成后初始化插件。

     $(function () {
       $("#organId").fSelect();
     });

五、相关问答FAQs

1、:如何同时选择或取消多项选择框中的所有选项?

:可以使用JavaScript遍历所有选项元素,并将它们的selected属性设置为truefalse来实现全选或取消全选。

     function selectAllOptions() {
       const options = document.querySelectorAll('#choices option');
       options.forEach(option => option.selected = true);
     }
     function deselectAllOptions() {
       const options = document.querySelectorAll('#choices option');
       options.forEach(option => option.selected = false);
     }

2、:如何在多项选择框中限制用户选择的最大数量?

:可以通过监听选择框的change事件,并在事件处理函数中检查已选择的选项数量,如果超过限制则取消多余的选择。

     let maxSelections = 3; //限制最大选择数量为3
     document.getElementById('choices').addEventListener('change', function() {
       if (this.selectedOptions.length > maxSelections) {
         this.selectedOptions[this.selectedOptions.length 1].selected = false; //取消最后一个选择的选项
         alert('最多只能选择' + maxSelections + '个选项');
       }
     });

原创文章,作者:未希,如若转载,请注明出处:https://www.lbseo.cn/14240.html