Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (jqueryUI)如何关闭自动完成?_Javascript_Jquery_Facebook_Jquery Ui_Autocomplete - Fatal编程技术网

Javascript (jqueryUI)如何关闭自动完成?

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

所以我尝试在jquery中重新创建Facebooks标记系统。我不能使用任何插件。我已经有一些了:

<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似乎不显示“无结果”部分)但不是在我的编辑器中…好吧,那可能就是我没有得到你的原因…它在小提琴中对我很好…对不起,我尽力帮助你,但是如果我不能在小提琴中模仿它,很难找到解决方案:(只是发现也许你可以隐藏盒子而没有结果。。。