jQuery自动完成没有'如果未选择任何值,则t点火
jQuery autocomplete doesn't fire if no value was selected
用例:用户正在寻找"测试"
工作示例:用户编写"test"并选择自动完成值。
问题:用户编写"测试",按下回车!
下次当我点击输入字段时,不会自动完成,但只有当我之前按下回车键(选择输入值)时才会自动完成!
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...");
}
在我的控制台中从来没有"在这里…",那么为什么自动完成("搜索")事件没有启动呢?
谢谢!
也许你可以解释你正在寻找什么,但它似乎在这里起作用。您没有显示所有的代码,或者有更大的问题正在发生,因为您引用that
和定义showAutocomplete
函数的方式永远不会按原样工作。
但在小提琴中,自动完成显示在每个focus
和click
上。但如果选择了某个内容,它将只显示上次搜索的结果。例如,如果我键入test
并且test
不在结果中,则即使在字段blurs
之后,也不会显示任何内容,然后再键入focus
,只要输入保持值test
。如果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');
但需要指出的是,在您的示例中,这实际上不会起到任何作用,因为您从未将处理程序附加到搜索事件。
Fiddle: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...");
}
});
- 我有多个复选框,并希望为其中 2 个制定规则,以便如果我选择 1 个,则无法选择另一个
- 如果选择单选按钮,则显示字段
- 如果选择单选按钮,则显示表单
- 如果选择了当前年份,则在Select元素中仅显示当前和未来月份
- 如果选择了特定的单选按钮,如何显示窗体
- 如果未选择第一个下拉列表,则禁用第二个下拉列表
- JQuery选择器:如果同级具有.class,则选择td
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 如果选择了Dropdown,则推入一个数组,否则,推入另一个数组
- 如果使用jquery在页面加载时未选择任何选项,如何禁用下拉列表
- Jquery自动完成:如果没有选择任何项目,则使tab键选择第一个项目
- 如果用户选择离开网页,如何删除记录
- 如果第一次选择中的选项1,则第二次选择被禁用
- jQuery折叠选项卡(如果选择相同)
- 如果用户未选中复选框或选择按钮,如何为复选框或单选按钮设置一些默认值
- JavaScript - 如果选中任何复选框,请选择单选按钮
- 如果选择了其他选择项目,则隐藏选择项目
- JavaScript / jquery:如果选择了单选按钮并且数据属性符合条件,则添加类
- jQuery .val(#) 在 AJAX 调用后不会更改选择 - 如果调试/暂停,则有效
- 选择如果数组元素重复两次——Javascript