繁体   English   中英

如果未选择任何值,则不会触发jQuery自动完成功能

[英]jQuery autocomplete doesn't fire if no value was selected

用例:用户正在寻找“测试”

工作示例:用户编写“ test”并选择自动完成值

问题:用户编写“测试”,然后按Enter

下次当我在输入字段中单击时,没有自动完成功能,但是只有在我之前按Enter(选择输入值)时才自动完成!

this.$el.autocomplete({
    source: mySource,
    minLength: 0
}).focus(function(){
   that.showAutocomplete();
}).click(function(){
   that.showAutocomplete();
});

showAutocomplete: function() {
   this.$el.autocomplete("search", this.$el.val());
   console.log("was here...");
}

在我的控制台中,从来没有“在这里...”,所以为什么不会触发autocomplete(“ search”)事件?

谢谢!

也许您可以解释您正在寻找的东西,但是它似乎可以在这里工作。 你没有显示你所有的代码或有更大的问题,怎么回事,因为你现在的样子引用that和定义showAutocomplete功能绝不会随着工作的。

但是在自动提琴中,自动focus显示在每个focusclick 但是,如果选择了某些内容,它将仅显示最后一次搜索的结果。 例如,如果我键入testtest不在结果中,那么即使在视场blurs之后也不会显示任何内容,然后只要输入保持值test我就再次focus它。 如果结果中包含test ,则下次我选择该字段时,它将仅显示test 删除该值将显示更多结果。

还有that.autocomplete("search", that.val()); 不是您如何触发搜索事件或如何初始化它。 要设置搜索事件,您可以执行以下操作:

$("#tags").autocomplete({
    source: availableTags,
    minLength: 0,
    search: function (event, ui) {
        // do something on event
    }
});

或者,在初始化自动完成后,您可以执行以下操作:

$el.autocomplete("search", function (event, ui) {
        // do something on event
    }
);

在您的示例中,每次您重点关注或单击该字段时,您都试图附加一个新的处理程序进行搜索,只是您只是将值传递给它而不是函数。 附加搜索后,以正确的方式,您可以通过执行以下操作手动触发它:

 $el.trigger('search');

但要指出的是,这在您的示例中实际上没有任何作用,因为您从未将处理程序附加到搜索事件。

小提琴: http : //jsfiddle.net/AtheistP3ace/yuvdnpj7/

HTML:

<label for="tags">Tags:</label>
<input id="tags">

JS:

$(function () {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "test",
        "Scheme"];
    $("#tags").autocomplete({
        source: availableTags,
        minLength: 0
    }).focus(function () {
        showAutocomplete($(this));
    }).click(function () {
        showAutocomplete($(this));
    });

    function showAutocomplete(that) {
        that.autocomplete("search", that.val());
        console.log("was here...");
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM