8

select( event, ui )选项的 jQuery Autocomplete 文档说:

当从菜单中选择一个项目时触发;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);
    }
});
4

3 回答 3

10

我知道这是一个非常古老的问题,但我自己只是遇到了这个问题。我的答案是放在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();将其放在函数的开头,则默认事件不会触发,函数的其余部分也不会执行。如果它移到最后,那么它会按预期工作。希望这对其他人有帮助。

于 2013-07-19T23:34:33.633 回答
0

所以这对我来说有点小技巧:在我的情况下,在下拉菜单中选择一个条目(通过鼠标单击或使用箭头键突出显示并按 ENTER),我使用value构建一个 URL,然后发送浏览器,但它仍然被复制到搜索框中。我尝试过的所有答案都无法阻止这种情况。因此,为了停止value在搜索框中显示,我做了与我的 JSONvalue相同的操作label,并添加了一个额外的字段code,我的select事件处理程序使用它来构造我需要的 URL:

$( "#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;
  }
});
于 2017-02-11T21:42:35.147 回答
-1

使用此参数 selectFirst: false

于 2010-09-07T03:32:49.737 回答