jQuery Easy Autocomplete回车键跳转问题:onChooseEvent用法求助
解决jQuery Easy Autocomplete回车键跳转链接(onChooseEvent)问题
看起来你已经找对了方向——onChooseEvent正是实现「选中选项(含回车触发)跳转链接」的核心钩子,只是可能在配置细节上出了问题。我帮你修正并解释代码:
完整可运行代码示例
$(function() { var options = { data: [ {"text": "Amazon", "website-link": "https://www.babelway.com/technology/amazon-mws/"}, {"text": "AS2", "website-link": "https://example.com/as2-demo"} // 补全示例链接 ], // 核心:选中选项时触发(点击/回车选中都生效) onChooseEvent: function() { // 获取当前选中项的完整数据 var selectedItem = $("#search-input").getSelectedItemData(); // 注意:带连字符的属性必须用方括号访问,不能用.语法 var targetUrl = selectedItem["website-link"]; if (targetUrl) { window.location.href = targetUrl; } }, // 可选:处理表单内回车的默认提交行为 list: { onKeyEnterEvent: function() { // 复用onChoose的逻辑,避免重复代码 var selectedItem = $("#search-input").getSelectedItemData(); var targetUrl = selectedItem["website-link"]; if (targetUrl) { window.location.href = targetUrl; return false; // 阻止表单默认提交行为 } } } }; // 初始化组件,替换成你实际的输入框ID $("#search-input").easyAutocomplete(options); });
关键细节说明
onChooseEvent的正确用法:这个事件会覆盖两种触发场景——用户鼠标点击选项,或者用键盘上下箭头选中后按回车,完全符合你的需求。通过getSelectedItemData()可以直接拿到选中项的完整数据对象。- 带连字符的属性访问:你的数据键是
website-link,不能用.语法(item.website-link会被解析成减法运算,直接报错),必须用方括号item["website-link"]来访问。 - 表单内回车的特殊处理:如果你的输入框放在
<form>标签里,回车键默认会触发表单提交,这时候需要在list.onKeyEnterEvent里返回false,阻止默认行为,确保跳转优先执行。 - 输入框ID匹配:记得把代码里的
#search-input替换成你页面中实际的输入框ID。
额外提示
如果你的Easy Autocomplete版本比较旧,建议升级到最新稳定版,确保onChooseEvent和getSelectedItemData()方法能正常工作。
内容的提问来源于stack exchange,提问作者Alice J
相关产品推荐
相关产品推荐

