可以输入也可以下拉选择的select

介绍一款基于jQuery的下拉框插件,允许用户输入内容,并实时匹配相关选项,支持键盘操作及HTML选项内容,具备动画效果。

我们知道,一般select下拉框是只能选择的,不能用来输入内容的。而有时我们会遇到下拉框中没有要选择的信息项或者下拉选项特别多时,我们可以让select变成text,允许用户输入想要的内容,同时还可以在输入的时候将包含关键字的项也列出来,供快速选择。

本文将用实例和大家分享一款基于jQuery的下拉框插件,它允许用户输入内容,同时下拉选项中会及时匹配相关选项,支持键盘操作,还支持html选项内容,当然还能让下拉的过程带有动画效果。我们来看下如何使用。

HTML结构

下面是一个基本的select下拉框。

<select id="editable-select"
    <option>Alfa Romeo</option> 
    <option>Audi</option> 
    <option>中国人民银行</option> 
    <option>中国人民</option> 
    <option>中国</option> 
    <option>BMW</option> 
</select> 

此外还需要加载jQuery库和jquery.editable-select.js文件,在源码下载包里已经有了。

jQuery

只需要以下代码就能实现传统的下拉框变成有输入功能的下拉框了。

$('#editable-select').editableSelect(
    effects: 'slide' 
}); 

其实我们细看插件代码就会发现,作者是将原有的select处理了下,变成了一个输入表单text和一个列表ul。这样text可以输入,下拉选项则用ul面板,这样一来ul里的选项就可以添加任意html代码了,demo中有示例。然后通过使用CSS以及js技术可以实现下拉弹出、输入查找匹配功能。

选项设置

filter:过滤,即当输入内容时下拉选项会匹配输入的字符,支持中文,true/false,默认true。

effects:动画效果,当触发弹出下拉选择框时的下拉框展示过渡效果,有default,slide,fade三个值,默认是default。

duration:下拉选项框展示的过渡动画速度,有fast,slow,以及数字(毫秒),默认是fast。

事件

onCreate:当输入时触发。

onShow:当下拉时触发。

onHide:当下拉框隐藏时触发。

onSelect:当下拉框中的选项被选中时触发。

事件调用方法:

$('#editable-select').editableSelect(
    onSelect: function (element) 
        alert("Selected!"); 
    
}); 

此外,还支持键盘方向键、回车键、Tab键以及Esc键操作。

jQuery Editable Select项目官网地址:https://github.com/indrimuska/jquery-editable-select

可手动输入也可下拉选择select 有多种实现方法,以下为你详细介绍: ### 纯 HTML + CSS 实现 基本原理是使用 input/select 两个元素,让 input 覆盖在 select 上层,宽度比 select 窄一点,这样用户就能点到 select 的箭头弹出下拉框。即使下拉选择中没有匹配用户输入的内容,所有选项也能够弹出来,且能兼容旧版 IE。示例代码如下: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .select-wrapper { position: relative; display: inline-block; } .select-wrapper input { position: absolute; top: 0; left: 0; width: calc(100% - 20px); /* 宽度比 select 窄一点 */ height: 100%; border: 1px solid #ccc; padding: 5px; } .select-wrapper select { width: 100%; height: 100%; opacity: 0; } </style> </head> <body> <div class="select-wrapper"> <input type="text"> <select> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> </select> </div> </body> </html> ``` ### 使用 JavaScript 库实现 可以借助一些成熟的 JavaScript 库来实现可编辑的下拉选择框,例如 Select2。Select2 是一个功能强大的 jQuery 插件,能将普通的 select 元素转换为支持搜索、多选、标签等功能的高级选择框。示例代码如下: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script> <script> $(document).ready(function () { $('.js-example-basic-single').select2({ tags: true }); }); </script> </head> <body> <select class="js-example-basic-single" style="width: 300px;"> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> </select> </body> </html> ``` ### 使用 HTML5 的 datalist 元素 datalist 元素可以为 input 元素提供自动补全功能,用户既可以手动输入内容,也可以从下拉列表中选择选项。示例代码如下: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input list="options" id="myInput" name="myInput"> <datalist id="options"> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> </datalist> </body> </html> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值