[英]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.