要求:
我想要一个 jQuery 自动完成元素,它允许用户选择一个项目并使用所选值设置显示字段和隐藏字段。但我也希望在输入字段获得用户焦点时清除该字段和隐藏字段。
问题:
我面临的问题是,当用户选择一个项目时,它几乎就像 jQuery 正在执行 onSelect 函数,然后再次将焦点发送到输入字段,这会触发我的 focus() 事件(并因此清除我的选择)。
问题浏览器:
IE8 ,在 Chrome 中工作。没有尝试其他人。
尝试修复:
- 我尝试将焦点设置到
select()
函数中的另一个元素。它确实将焦点放在了该元素上,但只是在关注输入字段之后 - 在 select() 方法中
event.preventDefault()
都试过了。event.stopPropagation()
不工作。 - 模糊也没有用。
解决方法:
我想我可以将清除更改为单击而不是焦点,但这不是我想要的。
类似的stackoverflow线程:
代码: 这是我的代码:
$(function () {
$("#autosuggest").autocomplete({
source: "my server path",
minLength: 3,
select: function (event, ui) {
if (ui.item) {
$("#autosuggest").val(ui.item.value);
$("#hidden").val(ui.item.id);
}
}
});
$("#autosuggest").focus(function () {
$("#hidden").val("");
this.value = "";
});
});