javascript - 下拉自动完成
问题描述
我希望下拉自动完成匹配字母为粗体,这是我的下拉自动完成代码:
var states = {
'Color': ['red', 'black', 'yellow', 'green', ],
'Numbers': ['one', 'two', 'three', 'four']
};
function match(str) {
str = str.toLowerCase();
clearDialog();
for (var i = 0; i < states.color.length; i++) {
if (states.color[i].toLowerCase().includes(str)) {
jQuery('.dialog').append('<div>' + states.color[i] + '</div>');
}
}
}
解决方案
首先,您可能希望<span>
在添加新创建的 div 之前执行标签插入,以便创建 CSS 类,您可以在其中设置粗体字体,甚至稍后更改其颜色或任何其他属性:
.dialog > div > .match {
font-weight: 700;
}
然后,您可以将此新内容附加text
到您的对话框中
...append(‘<div>’ + text + ‘</div>’);
$(document).ready(function() {
var states = {
'Color': ['red', 'black', 'yellow', 'green', 'Dark Green', 'Light Grey'],
'Numbers': ['one', 'two', 'three', 'four']
};
$('input').on('keyup', function () {
match($(this).val());
});
function match(str) {
str = str.toLowerCase();
$('.dialog').empty();
for (var i = 0; i < states.Color.length; i++) {
if (states.Color[i].toLowerCase().includes(str)) {
var mStart = states.Color[i].toLowerCase().indexOf(str);
var mEnd = mStart + str.length;
var text = states.Color[i].slice(0, mStart);
text += '<span class="match">';
text += states.Color[i].slice(mStart, mEnd);
text += '</span>';
text += states.Color[i].slice(mEnd);
$('.dialog').append('<div>' + text + '</div>');
}
}
}
});
.dialog > div > .match {
font-weight: 700;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" />
<div class="dialog">
推荐阅读
- java - 在 Android 应用中保存不断变化的分数
- sql - 前导长度是什么意思?
- c# - 空按钮单击事件仍然触发某些东西
- c# - Caliburn.Micro 中 ActivateItem 后的操作
- c# - 如何根据 1 个组合框中的选择过滤 2 个组合框?
- c# - Pivottable.pivotfields 在外部数据源的情况下不检测任何字段
- ios - 在 iOS 中使用 Firebase 自动设置强密码的关联域
- c# - C#:查询远程服务器以查看哪个用户锁定了文件
- node.js - Child_process 和工作线程有什么区别?
- java - java转换中import org.json不存在错误