Javascript jQuery:自动完成事件处理程序不工作

Javascript jQuery:自动完成事件处理程序不工作,javascript,jquery,Javascript,Jquery,My modal有一个自动完成函数,它从值列表[数组]中建议。这样选择的值应该位于提供的id中,以便我可以使用它 var descriptionList = ["val", "val2",...]; $(".mg-text-autocomplete").autocomplete({ source: descriptionList, // My array of values select: function(event, ui)

My modal有一个自动完成函数,它从值列表[数组]中建议。这样选择的值应该位于提供的id中,以便我可以使用它

var descriptionList = ["val", "val2",...];
$(".mg-text-autocomplete").autocomplete({
                source: descriptionList,  // My array of values
                select: function(event, ui) {
                    $("#inputText").val(ui.item.value);
                    return false;
                },
                focus: function(event, ui) {
                    // do something..
                    return false;
                }
            });
问题:当我从自动完成中选择一个项目时,尽管提供了一个
返回false,焦点还是转移到了基本页面,而不是保持/停留在相同的模式中

从“自动完成”中选择项目后,如何保持相同的模式


PS:如果我用一个
typeahead
函数来代替这个,就没有问题了。但是我不想要这个特性。

不要在事件处理程序中使用“return false;”,这是一种糟糕的做法。更好地执行event.preventDefault()@Ololo,返回
false
与调用
preventDefault()。为什么这会是坏习惯?@Ololo:对不起。替换为
event.preventDefault()
@FrédéricHamidi不起作用,因为如果您有多个处理程序,那么事件循环将被中断,并且不会执行其他处理程序。使用event.preventDefault()可以防止本地浏览器事件execution@Ololo,您的意思必须是“如果您在祖先元素上注册了其他处理程序”,因为
return false
意味着
stopPropagation()
而不是
stoppimediatepropagation()
。停止传播有时非常有用,所以我不会将其视为“坏习惯”。还要注意,在这个特定的实例中,
focus
select
都不会在文档树上冒泡,因此
return false
就等同于
preventDefault()