就像标题中一样,我对两个函数都使用相同的代码
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修改了我的自动填充内容
我想点击一下,显示所有可能的选项。
在我与自己创建的功能链接的问题中,单击它似乎对每个人都有效。但是,当我单击它不起作用。如果单击,请从屏幕上移至新选项卡,然后再返回即可。或如果我单击该字段,请单击该字段,然后再次单击它。您能看到这种行为的原因吗?
这几乎就像需要单击一下才能注册,然后在第二秒钟就可以生效。
我尝试删除on('click')函数并测试keyup,发现现在'keyup'需要2个keyup才能起作用
在将console.log(completion)放在回调中并在焦点调用中将console.log(“ HERE”)放在焦点调用中之后,我在日志上看到完成将打印多次,但不能在此处打印,如果关闭屏幕,回到这里,将在完成打印之间进行自我注入。
答案 0 :(得分:0)
为了简洁起见,我将代码段作为答案。想法是将原始事件移到内部,作为对autocomplete
的回调。
function autoComplete(event) {
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
}).on(event, function() {
$(this).autocomplete('search', $(this).val())
});
});
}
autoComplete('click');
autoComplete('keyup');