1

我在 Wordpress 插件中使用 jQuery Autocomplete。失焦时如何取消 ajax/自动完成? $first_id由 PHP 传递并允许多个实例。

jQuery(document).ready(function ($){

  $("#'.$first_id.'").autocomplete({
    source: function(req, add){
      $.getJSON("'.site_url().'/wp-admin/admin.php?page=church_admin/index.php&action=get_people&callback=?", req,  function(data) {

        //create array for response objects
        var suggestions = [];

        //process response
        $.each(data, function(i, val){
          suggestions.push(val.name);
        });

        //pass array to callback
        add(suggestions);
      });

    },
    select: function (event, ui) {
      var terms = $("#'.$first_id.'").val().split(", ");
      // remove the current input
      terms.pop();
      console.log(terms);
      // add the selected item
      terms.push(ui.item.value);
      console.log(terms);
      // add placeholder to get the comma-and-space at the end
      terms.push("");
      this.value = terms.join(", ");
      $("#'.$first_id.'").val(this.value);
      return false;
    },
    minLength: 3,

  });
});
4

1 回答 1

0

我认为自动完成会自动为您处理。jQuery 站点上给出的示例实现显示了当焦点发送到其他地方时自动完成功能被关闭。

是否有一些代码阻止它正确关闭?

无论如何-您可以手动关闭自动完成功能,但我会先调查您的代码中发生了什么。

$("#'.$first_id.'").on('blur', function(){
    $("#'.$first_id.'").autocomplete("close");
}

编辑

从您的评论中,听起来您在显示自动完成时添加了一些额外的 CSS。当自动完成关闭时,您可以通过以下close任一方式监听事件来删除它:

$( ".selector" ).autocomplete({
  close: function( event, ui ) {}
});

或者

$( ".selector" ).on( "autocompleteclose", function( event, ui ) {} );
于 2013-03-25T00:10:38.650 回答