2010-08-03 24 views
7

当从菜单中选择一个项目时触发; ui.item引用所选项目。 select的默认操作是将文本字段的值替换为所选项目的值。取消此事件可防止更新该值,但不会阻止菜单关闭。如何防止自动完成中的默认选择事件jquery

$("#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

你有没有想办法? – 2012-11-13 16:57:04

回答

-1

使用此参数 selectFirst:假

+0

不起作用。对不起 – Trip 2012-03-09 19:21:07

6

我知道这是一个非常古老的问题,但我只是碰到问题就来了自己。对我来说,答案是把event.preventDefault();在选择方法是这样的结尾:

$("#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();是在函数的开始放,然后默认事件不火,其余的功能不会执行。如果它移动到最后,那么它按预期工作。希望这可以帮助别人。

+0

最后一次自动完成后不适用于我。 :( – user706420 2014-02-16 23:29:13

0

所以这是一个黑客工作对我来说:在我的情况下在下拉菜单中选择一个条目(通过鼠标点击或使用箭头键突出显示和按ENTER),我使用value构建网址,然后将浏览器发送给它,但它仍然被复制到搜索框中。我尝试过的所有答案都没有用于防止这种情况。所以停止value显示在搜索框中,我做了value一样在我的JSON label,并增加了额外字段codeselect事件处理程序使用来构建我需要的网址:

$("#autocomplete").autocomplete({ 
    source: "http://www.example.com/search", 
    minlength: 2, 
    select: function(event, ui) { 
    // go to page on ENTER 
    window.location.href = "/page/" + ui.item.code; 
    } 
}); 
相关问题