如何防止自动完成jquery中的默认选择事件

时间:2010-08-03 21:44:32

标签: jquery 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);
    }
});

3 个答案:

答案 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