【发布时间】:2019-09-22 10:45:17
【问题描述】:
就像标题所述,我对这两个函数使用相同的代码,就像这样
function autoComplete() {
var jarName = $("#artifactId").val();
var jarVersion = $("#version").val();
url = "/xx/yy/zz/"+jarName+"/"+jarVersion+"";
if (jarVersion===""){
url = "/api/eetools/appdependencyfinder/"+jarName+"";
}
$.getJSON(url, function(completion) {
$("#version").autocomplete({
source: completion,
minLength: 0
})
.focus(function() {
$(this).autocomplete('search', $(this).val())
});
});
}
$("#version").on('keyup',autoComplete);
$("#version").on('click',autoComplete);
我从here修改了我的自动完成功能
我想在点击时显示所有可能的选项。
点击它似乎对我与我创建的函数链接的问题中的每个人都有效。但是,当我单击它不起作用。如果我单击,将屏幕移到新选项卡,然后返回,它确实有效。或者如果我单击该字段,请单击它,然后再次单击它。你能看出这种行为的原因吗?
这几乎就像只需点击 1 次即可注册,然后第二次就可以使用。
我尝试删除 on('click') 函数并测试 keyup,并注意到现在 'keyup' 需要 2 个 keyup 才能工作
在将console.log(completion) 放入回调和console.log(“HERE”) 放入焦点调用后,我在日志上看到完成将打印多次但不是HERE,如果我关闭屏幕然后回到 HERE 将在完成打印之间注入自身。
【问题讨论】:
-
为什么需要
keyup和click?看来keyup应该完全满足您的需求 -
因为如果他们单击该字段,我希望他们看到所有选项,而不是开始输入并查看选项编辑:如果我拿走 click keyup 需要两个键才能工作
-
似乎
autoComplete中的focus事件并没有像click那样触发。我会向上移动focus代码,甚至完全取出。在其他活动中调用focus会很棘手 -
@TonyM 向上移动是什么意思?是否有可能调用 async() ?
-
问题在于嵌套事件。你可以尝试这样的事情:(仅供参考 - 未测试):
标签: javascript jquery autocomplete