[英]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
顯示在每個focus
並click
。 但是,如果選擇了某些內容,它將僅顯示最后一次搜索的結果。 例如,如果我鍵入test
而test
不在結果中,那么即使在視場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.