jquery - 有没有办法在没有任何第三方插件的情况下让引导自动完成文本字段?
问题描述
我想创建自动建议搜索,当在文本输入字段中输入时,它会在数组中搜索并在出现的列表中显示结果,并可以选择结果。
先感谢您。
解决方案
使用 jQuery 将自动完成功能组合起来非常简单。
我在 15 分钟内完成了这项工作。这有点粗糙,所以你需要根据你的要求修改它并完成它,我使用 SCSS 而不是 CSS,所以你可能也想改变它。
请看这个演示:JSFIDDLE
HTML:
<div class="autocomplete-wrapper">
<input type="text" id="query" autocomplete="off">
<ul id="query-results"></ul>
</div>
jQuery:
var arr = ["Martin", "James", "Jamie", "Jameson", "Jamelia", "Jamela", "StackOverflow"];
$('#query').on({
"focus": function() {
$(this).parent().css('border-color', '#CCCCCC');
},
"blur": function() {
$(this).parent().css('border-color', '#EEEEEE');
},
"keyup": function() {
var results = [];
var val = $(this).val();
var $queryResults = $('#query-results');
var queryResultsMarkup = "";
if (val.length > 1) {
$queryResults.html("").hide();
$.each(arr, function(i) {
if (arr[i].match(new RegExp(val,'i'))) {
var $li = $('<li/>')
.html(arr[i])
.attr('data-value', arr[i]);
$queryResults.append($li).show();
}
});
$('li').on('click', function() {
var selectedVal = $(this).attr('data-value');
$('#query').val(selectedVal);
$('#query-results').html("").hide();
});
} else {
$queryResults.html("").hide();
}
}
});
CSS:
.autocomplete-wrapper {
position: relative;
width: 400px;
height: 42px;
border: solid 1px #EEE;
padding: 5px 10px;
font-family: 'Verdana', sans-serif;
#query {
height: 42px;
padding: 0;
margin: 0;
width: 100%;
border: none;
font-size: 13px;
&:focus {
outline: 0;
}
}
#query-results {
display: none;
position: absolute;
top: 36px;
left: -1px;
right: -1px;
border: solid 1px #CCC;
min-height: 50px;
max-height: 100px;
overflow: scroll;
list-style: none;
padding: 10px;
li {
padding: 5px;
margin: 0;
font-size: 13px;
&:hover {
background: #EEE;
cursor: pointer;
}
}
}
}
推荐阅读
- c++ - Visual Studio 2015 中每个新 cpp 文件中的默认代码
- javascript - PHP - how to display user inputs multiform before inserting to database
- apache - 通过 header 响应大小确定实际服务器中的内存使用情况
- android - 如何拦截一个活动中的所有点击事件?
- python-3.x - 如何在熊猫中应用公式
- android - 为什么android studio会在图形布局编辑器中自动重新排序视图和元素
- java - hadoop用类名提交作业,为什么需要job.setJarByClass()?
- ios - Swift为文本字段阴影代码创建扩展
- javascript - angular.js:88 未捕获的错误:[$injector:modulerr]
- c - vim 在 rsync 之后替换 printf 上的奇怪字符