概要
这是一个为input标签实现下拉选项功能,且input中可使用模糊匹配,最后可以选中其中一个选项。
代码
这是完整的HTML代码实例,可直接网页显示。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Dropdown with Fuzzy Search and Selection</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
/* 样式用于保持下拉框的可见性和滚动 */
.dropdown-container {
position: relative;
width: 200px;
}
.dropdown-search {
width: 100%;
padding: 5px;
border: 1px solid #ccc;
box-sizing: border-box;
}
.dropdown {
display: none; /* 默认隐藏下拉框 */
width: 100%;
height: 150px; /* 控制下拉框高度 */
overflow-y: auto; /* 支持滚动 */
border: 1px solid #ccc;
box-sizing: border-box;
position: absolute;
background-color: white;
z-index: 1; /* 确保下拉框在最上层 */
}
.dropdown.show {
display: block; /* 显示下拉框 */
}
.dropdown-option {
padding: 5px;
cursor: pointer;
}
.dropdown-option:hover {
background-color: #f0f0f0; /* 鼠标悬停时改变背景颜色 */
}
</style>
</head>
<body>
<div class="dropdown-container">
<!-- 搜索框 -->
<input type="text" class="dropdown-search" id="search-input" placeholder="Search..." autocomplete="off">
<!-- 下拉框 -->
<div class="dropdown" id="dropdown">
<div class="dropdown-option" data-value="apple">Apple</div>
<div class="dropdown-option" data-value="banana">Banana</div>
<div class="dropdown-option" data-value="orange">Orange</div>
<div class="dropdown-option" data-value="grapes">Grapes</div>
<div class="dropdown-option" data-value="watermelon">Watermelon</div>
<div class="dropdown-option" data-value="blueberry">Blueberry</div>
</div>
</div>
<script>
// 监听搜索输入框的 keyup 事件
$('#search-input').on('keyup', function() {
var searchValue = $(this).val().toLowerCase(); // 获取搜索内容
var dropdown = $('#dropdown'); // 下拉框
// 显示下拉框
dropdown.addClass('show');
// 遍历下拉框的选项
dropdown.find('.dropdown-option').each(function() {
var optionText = $(this).text().toLowerCase(); // 获取选项文本
if (optionText.includes(searchValue)) {
$(this).show(); // 显示匹配的选项
} else {
$(this).hide(); // 隐藏不匹配的选项
}
});
});
// 监听选项的点击事件
$('.dropdown-option').on('click', function() {
var selectedValue = $(this).attr('data-value'); // 获取选项的值
var selectedText = $(this).text(); // 获取选项的文本
// 将选中的文本显示在搜索框中
$('#search-input').val(selectedText);
// 隐藏下拉框
$('#dropdown').removeClass('show');
});
</script>
</body>
</html>