jQuery UI的自动完成(Autocomplete)是一个强大的小部件,它允许用户在输入框中输入时显示一个下拉建议列表。默认情况下,它会根据用户输入过滤建议项,但不突出显示匹配部分。
要使匹配的文本变为粗体,我们需要自定义自动完成小部件的显示方式,具体步骤如下:
$(function() {
$("#autocomplete").autocomplete({
source: ["Apple", "Banana", "Cherry", "Date", "Elderberry", "Fig", "Grape"],
focus: function(event, ui) {
// 防止默认行为,避免直接填充值
event.preventDefault();
$(this).val(ui.item.value);
},
select: function(event, ui) {
// 选择项目时的处理
$(this).val(ui.item.value);
return false;
}
}).autocomplete("instance")._renderItem = function(ul, item) {
// 自定义渲染函数
var re = new RegExp("(" + $.ui.autocomplete.escapeRegex(this.term) + ")", "gi");
var highlighted = item.label.replace(re, "<strong>$1</strong>");
return $("<li>")
.append("<div>" + highlighted + "</div>")
.appendTo(ul);
};
});
source
: 定义自动完成的数据源,可以是数组、URL或回调函数_renderItem
: 覆盖默认的渲染方法,自定义每个建议项的显示方式this.term
)创建正则表达式,匹配文本中的相应部分<strong>
标签包裹,使其显示为粗体<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery UI Autocomplete with Bold Matches</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<style>
.ui-autocomplete {
max-height: 200px;
overflow-y: auto;
overflow-x: hidden;
}
</style>
</head>
<body>
<div class="ui-widget">
<label for="autocomplete">Search: </label>
<input id="autocomplete">
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function() {
$("#autocomplete").autocomplete({
source: ["Apple", "Banana", "Cherry", "Date", "Elderberry", "Fig", "Grape"],
minLength: 1,
focus: function(event, ui) {
event.preventDefault();
$(this).val(ui.item.value);
},
select: function(event, ui) {
$(this).val(ui.item.value);
return false;
}
}).autocomplete("instance")._renderItem = function(ul, item) {
var re = new RegExp("(" + $.ui.autocomplete.escapeRegex(this.term) + ")", "gi");
var highlighted = item.label.replace(re, "<strong>$1</strong>");
return $("<li>")
.append("<div>" + highlighted + "</div>")
.appendTo(ul);
};
});
</script>
</body>
</html>
这种技术适用于:
$.ui.autocomplete.escapeRegex
对输入进行转义,防止正则表达式注入通过这种方法,你可以有效地增强jQuery UI自动完成功能,使匹配部分更加醒目,提升用户体验。
没有搜到相关的文章