【发布时间】:2025-11-24 22:55:02
【问题描述】:
我有一个链接列表,我有这个搜索框#reportname。当用户在搜索框中输入内容时,自动完成功能会在列表中显示链接的文本。
<div class="inline">
<div class="span-10">
<label for="reportname">Report Name</label>
<input type="text" name="reportname" id="reportname" />
</div>
<div class="span-10 last">
<button type="button" id="reportfind">Select</button>
</div>
</div>
然后用户可以使用键盘箭头选择其中一个文本,当他按下 ENTER 时,浏览器将转到链接的地址。到目前为止一切顺利。
<script type="text/javascript">
$(document).ready(function () {
$("#reportname").autocomplete({
source: $.map($("a.large"), function (a) { return a.text }),
select: function () { $("#reportfind").click() }
})
$("#reportfind").click(function () {
var reportname = $("#reportname")[0].value
var thelinks = $('a.large:contains("' + reportname + '")').filter(
function (i) { return (this.text === reportname) })
window.location = thelinks[0].href
})
});
</script>
问题是当用户键入时,自动完成显示一个列表,然后用户使用鼠标单击其中一个结果。使用键盘导航,会改变搜索框的内容,但是如果用户点击其中一个选项,搜索框不会被修改,会立即触发 select 事件。
如何使脚本与键盘选择和鼠标选择一起工作?如何区分键盘触发的选择事件和鼠标触发的选择事件?
【问题讨论】:
标签: jquery-ui