【问题标题】:jqueryui autocomplete keep open but close when outside is clickedjqueryui自动完成保持打开但在外部单击时关闭
【发布时间】:2019-03-30 19:39:36
【问题描述】:

我正在使用 jquery-ui 自动完成。

我希望自动完成搜索的结果列表保持打开状态 并在'自动完成文本输入区域'&'搜索结果列表'之外的区域关闭。

我引用了keep ui autocomplete open at all times

现在它保持打开状态。 但是在点击外部区域时不知道如何关闭它。

http://jsfiddle.net/9r3avhoe/6/

$("input").autocomplete({
    source: ["Apple", "Boy", "Cat"],
    minLength: 0,
    response: function(event, ui) {
          //console.log(ui);
        },
        select: function(event, ui) {
          addObject(ui.item.value);
          return false;
        },
        focus: function(event, ui) {
          return false;
        },
        close: function(event, ui) {
          if (!$("ul.ui-autocomplete").is(":visible")) {
            $("ul.ui-autocomplete").show();
            $( "#search" ).focus();
          }

        }
});

【问题讨论】:

标签: javascript jquery jquery-ui onclick jquery-ui-autocomplete


【解决方案1】:

$("input").autocomplete({
    source: ["Apple", "Boy", "Cat"],
    minLength: 0,
		response: function(event, ui) {
					//console.log(ui);
				},
				select: function(event, ui) {
					addObject(ui.item.value);
					return false;
				},
				focus: function(event, ui) {
        console.log("focused");
					return true;
				},
				close: function(event, ui) {
					if (!$("ul.ui-autocomplete").is(":visible")) {
						$("ul.ui-autocomplete").show();
						$( "#search" ).focus();
					}

				}
});
$( "input").blur(function() {
  	$("ul.ui-autocomplete").hide();
  	
});
function addObject(id){
	var div = $('<p>'+id+'</p>').attr({"value":id}); 

	div.appendTo("#selected_obj");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

<script
  src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
  integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
  crossorigin="anonymous"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet"/>
  <input type="text" />
<br/>
<br/>
<div id="selected_obj" style="border:solid 1px black;float:right">

</div>

添加一个模糊事件,然后隐藏弹出窗口。我希望这会对你有所帮助。

【讨论】:

    【解决方案2】:

    您可以使用 focusout 并触发小部件事件。

    $("input").focusout(function(event) {
        $("ul.ui-autocomplete").hide();
    })
    

    【讨论】:

      猜你喜欢
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多