簡體   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