仅当按下特殊键时显示Jquery UI自动完成
我有一个带有自动完成功能的文本框,我只想在按下点键仅当按下特殊键时显示Jquery UI自动完成,jquery,jquery-ui,jquery-ui-autocomplete,Jquery,Jquery Ui,Jquery Ui Autocomplete,我有一个带有自动完成功能的文本框,我只想在按下点键时显示结果 我试过: $("#tags").on("keypress", function () { var keys = []; keys.unshift(e.which); if (String.fromCharCode(keys[0]) == ".") { } else { $("#tags").unbind(); } }); 但是,$(“#标记”).unbind(
时显示结果
我试过:
$("#tags").on("keypress", function () {
var keys = [];
keys.unshift(e.which);
if (String.fromCharCode(keys[0]) == ".") {
} else {
$("#tags").unbind();
}
});
但是,$(“#标记”).unbind()代码>从文本框中删除所有事件,如果我再次按点键,结果将不会显示
我怎样才能解决这个问题 您可以尝试这样的操作,而不是绑定/解除绑定(这样您就可以通过按
来切换自动完成的激活/停用:
$("#tags").on("keypress", function (e) {
var keys = [];
keys.unshift(e.which);
if (String.fromCharCode(keys[0]) == ".") {
if(autocomplete_flag == 0) {
autocomplete_flag = 1;
$(this).autocomplete( "enable" );
} else {
autocomplete_flag = 0;
$(this).autocomplete( "disable" );
}
}
});
如下所示:下面是一个模拟visual studio功能的解决方案:
它存储最后一个“.”的位置,并使用其后的任何内容作为自动完成的过滤器
$(function () {
var availableTags = [
"ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme"];
var lastDot = -1;
$("#tags").autocomplete({
minLength: 0,
source: function (request, response) {
if (lastDot>=0) {
response($.ui.autocomplete.filter(
availableTags, extractLast(request.term.substring(lastDot+1))));
}
},
focus: function () {
return false;
},
select: function (event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.value);
terms.push("");
this.value = this.value.substr(0,lastDot+1);
this.value += terms.join("");
return false;
}
}).on("keypress", function (e) {
var keys = [];
keys.unshift(e.which);
if (String.fromCharCode(keys[0]) == ".") {
lastDot = $("#tags").val().length;
}
});
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
});
如果您只想解除按键事件的绑定,$(“#标记”).unbind(“按键”);(您实际上应该使用$(“#标记”).off(“按键”);)我不想解除keypress事件的绑定,我想解除自动完成事件的绑定,然后在按下时重新绑定它。这是您想要的吗?我让它模拟Visual Studio的功能:是的!请将其作为答案发布!不确定您是否理解该问题。我想在Visual Studio中执行类似于autosuggest的操作。autos仅当用户按下“.”时,提示才会出现。自动完成字符串中将包含“.”,因为您的“可用标记”中没有一个包含“.”。它们不会被匹配并添加到自动完成列表中,因此您需要从字符串中删除“.”尝试添加“.ActionScript”两次。它仅在第一次工作时有效。