Javascript (jqueryUI)如何关闭自动完成?
所以我尝试在jquery中重新创建Facebooks标记系统。我不能使用任何插件。我已经有一些了:Javascript (jqueryUI)如何关闭自动完成?,javascript,jquery,facebook,jquery-ui,autocomplete,Javascript,Jquery,Facebook,Jquery Ui,Autocomplete,所以我尝试在jquery中重新创建Facebooks标记系统。我不能使用任何插件。我已经有一些了: <html lang="de"> <head> <title>Autocomplete</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script s
<html lang="de">
<head>
<title>Autocomplete</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var triggered = false;
var trigger = "@";
var index = -1;
$("input").autocomplete({
source: [
"AAB",
"AAC",
"CCE",
"CCG",
"IIU",
"IIO"],
search: function () {
if (!triggered) {
return false;
}
},
select: function (event, ui) {
var text = this.value;
var pos = text.lastIndexOf(trigger);
this.value = text.substring(0, pos + trigger.length) + ui.item.value;
triggered = false;
return false;
},
focus: function () {
return false;
},
minLength: 0
}).on("keyup", function () {
var text = this.value;
var len = text.length;
var last;
var query;
if (triggered) {
index = text.lastIndexOf(trigger);
query = text.substring(index + trigger.length);
$(this).autocomplete("search", query);
if (index === -1) {
triggered = false;
}
} else if (len >= trigger.length) {
console.log("ELSE IF")
last = text.substring(len - trigger.length);
triggered = (last === trigger);
}
});
});
</script>
</head>
<body>
<label>Input something here:</label>
<br>
<input type="text" value="" autofocus="true" />
</body>
</html>
自动完成
$(文档).ready(函数(){
var=false;
var trigger=“@”;
var指数=-1;
$(“输入”)。自动完成({
资料来源:[
“AAB”,
“AAC”,
“CCE”,
“CCG”,
“IIU”,
“IIO”],
搜索:函数(){
如果(!已触发){
返回false;
}
},
选择:功能(事件、用户界面){
var text=this.value;
var pos=text.lastIndexOf(触发器);
this.value=text.substring(0,pos+trigger.length)+ui.item.value;
触发=错误;
返回false;
},
焦点:功能(){
返回false;
},
最小长度:0
}).on(“键控”,函数(){
var text=this.value;
var len=text.length;
var last;
var查询;
如果(已触发){
索引=text.lastIndexOf(触发器);
query=text.substring(index+trigger.length);
$(this).autocomplete(“搜索”,查询);
如果(索引==-1){
触发=错误;
}
}else if(len>=触发器长度){
console.log(“ELSE IF”)
last=text.substring(len-trigger.length);
触发=(最后一次==触发);
}
});
});
在此处输入内容:
所以我遇到了以下问题:标记工作得很好,但是在我点击@once之后,自动完成并没有消失。它停止搜索,但仍显示未找到任何结果。我试图解决它如下:
- 我在autocomplete中尝试了“disabled”属性,这导致它根本无法工作
- 我尝试了“destroy”方法,但它导致我在第一次之后无法调用autocomplete
- 我尝试了“禁用”方法,结果显示了“有6个元素”(我在这里解释)
- 最后,我尝试了封闭的方法,它完全不起作用
所以我的问题是:有人知道这是怎么回事吗?我必须重写我的代码吗?这有点奇怪。。。但在keyup事件中如何:
if(this.value == ""){
triggered = false;
$("input").autocomplete( "close" );
}
这有点奇怪。。。但在keyup事件中如何:
if(this.value == ""){
triggered = false;
$("input").autocomplete( "close" );
}
你能和我共用一把小提琴吗。@这是小提琴:你能试试“$”(“#标记”)。自动完成('close');`关闭“自动完成”窗口。@dreamweiver正如我在最后一点中所说的,这绝对没有任何作用,谢谢。你能分享一把小提琴吗?@bloC这里是小提琴:你能试试“$”(“#标记”)。自动完成('close');`关闭“自动完成”窗口。@dreamweiver正如我在最后一点中所说的,这完全不起作用,无论如何,谢谢。这有一个问题。整个系统的要点是,我可以键入整个文本,然后在其中的某个地方放一个@。在@之后,我应该能够标记一个项目,如果我删除@,而不是整个文本,自动完成应该关闭。谢谢你的帮助。那么你想在你写@时立即打开自动完成?它已经打开了。^^我想在我选择某个内容或删除@后完全关闭它。这在fiddle中起作用是有原因的(显然fiddle没有显示“无结果”部分),但在我的编辑器中不起作用…好吧,那可能就是我没有得到你的原因。。。它在小提琴上对我很好。。。很抱歉,我尽了最大努力来帮助您,但如果我无法模仿它,则很难找到解决方案:(刚刚发现也许你可以隐藏框而不显示结果…这有一个问题。整个系统的要点是,我可以键入全文并在其中的某个位置放置一个@。在@之后,我应该能够标记一个项目,如果我删除@,而不是整个文本,自动完成应该关闭。谢谢你的帮助。所以你想要写@时自动完成打开?它已经打开了^^我希望在我选择某个内容或删除@后它完全关闭。出于某种原因,它在fiddle中工作(fiddle似乎不显示“无结果”部分)但不是在我的编辑器中…好吧,那可能就是我没有得到你的原因…它在小提琴中对我很好…对不起,我尽力帮助你,但是如果我不能在小提琴中模仿它,很难找到解决方案:(只是发现也许你可以隐藏盒子而没有结果。。。