如何为Bootstrap5 Autocomplete自动补全列表添加href链接跳转功能
Bootstrap 5 Autocomplete 选中项跳转实现方案
你当前使用的插件已经预留了选中项的回调钩子onSelectItem,不需要额外修改插件源码,直接在回调中加入跳转逻辑即可实现需求。
基础实现(点击选项直接跳转)
直接修改原有onSelectItem配置项,替换原有console输出逻辑为页面跳转代码,完整代码如下:
<script> var datasrc = [ {label: 'About', value: 'about.html'}, {label: 'Components', value: 'components.html'}, {label: 'Usage', value: 'usage.html'}, ] const ac = new Autocomplete(document.getElementById('autosuggest'), { data: datasrc, treshold: 1, maximumItems: 8, onSelectItem: ({label, value}) => { // 当前页跳转 window.location.href = value; // 若需要新标签页打开,替换为下方代码即可 // window.open(value, '_blank'); } }); </script>
进阶优化(下拉项渲染为可右键操作的链接)
如果需要让下拉建议项具备原生链接的交互特性(鼠标悬浮显示手型、支持右键菜单选择新开标签/复制链接地址),可以使用插件自带的customRender配置自定义渲染列表项为<a>标签:
const ac = new Autocomplete(document.getElementById('autosuggest'), { data: datasrc, treshold: 1, maximumItems: 8, // 自定义渲染下拉项为a标签 customRender: (item) => { return `<li><a class="dropdown-item" href="${item.value}">${item.label}</a></li>` }, onSelectItem: ({label, value}) => { window.location.href = value; } });
注意事项
- 若跳转目标为站外地址,
value字段需要填写带http://或https://前缀的完整绝对路径 - 若需要选中后先清空输入框再跳转,在跳转代码前加入
document.getElementById('autosuggest').value = ''即可 - 若需要跳转前做逻辑校验(比如权限判断、参数拼接),直接在
onSelectItem回调里写对应判断逻辑,满足条件再执行跳转代码即可
内容的提问来源于stack exchange,提问作者jottin
相关产品推荐
相关产品推荐

