从菜单中选择项目时触发; ui.item指的是所选项目。 select的默认操作是将文本字段的值替换为所选项的值。取消此事件可防止更新值,但不会阻止菜单关闭。
$("#txt1").autocomplete({
minLength: 1,
source: "abc.php",
select: function(event, ui)
{
event.preventDefault();
//alert("Select");
var label= ui.item.label;
var value= ui.item.value;
$('#txt1').val(ui.item.label);
}
});
答案 0 :(得分:7)
我知道这是一个非常古老的问题,但我自己也遇到过这个问题。我的答案是将event.preventDefault();
放在select方法的末尾,如下所示:
$("#txt1").autocomplete({
minLength: 1,
source: "abc.php",
select: function(event, ui)
{
//alert("Select");
var label= ui.item.label;
var value= ui.item.value;
$('#txt1').val(ui.item.label);
event.preventDefault(); // <---- I moved!
}
});
对我来说,如果event.preventDefault();
放在函数的开头,那么默认事件不会触发,函数的其余部分也不会执行。如果它移动到最后,那么它按预期工作。希望这有助于其他人。
答案 1 :(得分:0)
所以这对我来说有点骇人听闻:在我的情况下,在下拉菜单中选择一个条目(通过鼠标点击或使用箭头键突出显示并点击ENTER),我使用的是value
构建一个URL,然后将浏览器发送给它,但它仍然被复制到搜索框中。我尝试过的答案都没有用来防止这种情况发生。因此,为了阻止value
显示在搜索框中,我将value
与我的JSON中的label
相同,并添加了一个额外的字段code
,我{{1}事件处理程序用于构造我需要的URL:
select
答案 2 :(得分:-1)
使用此参数 selectFirst:false