如何在 keyup 上手动触发 jquery 自动完成

How to trigger jquery autocomplete manually on keyup

我想在键入时手动触发 jquery 自动完成,只有在输入结束时按下星号“*”之后。

这是我所做的:

<input type="text" name="test" id="mainSearchBox">

var availableTags = [
   "Perl",
   "PHP",
   "Python",
   "Ruby"
];
$('input#mainSearchBox').keyup(function(){
    var value = $('input#mainSearchBox').val();
    if(value.substr(value.length - 1) == "*"){
        $(this).autocomplete({
            source: availableTags,
            minLength:0
        });
    } else {
        $(this).autocomplete("close");
    }
});

jsfiddle

在这里, 尝试这样做:

var availableTags = [
  "Perl",
  "PHP",
  "Python",
  "Ruby"
];
$('input#mainSearchBox').autocomplete({
  source: availableTags,
  minLength: 0
});

$('input#mainSearchBox').autocomplete("disable");

$('input#mainSearchBox').keyup(function(e) {

  var code = (e.keyCode ? e.keyCode : e.which);
  switch (code) {
    case 40: //down key
    case 38: //up key
    //add more cases for special buttons
      return;
  }

  var value = $('input#mainSearchBox').val();
  var last = value.substr(value.length - 1);
  if (last == "*") {
    var valToSearch = value.substr(0, value.length - 1);
    $('input#mainSearchBox').autocomplete("enable");
    $('input#mainSearchBox').autocomplete("search", valToSearch);
  } else {
    $('input#mainSearchBox').autocomplete("disable");
  }
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<input type="text" name="test" id="mainSearchBox">

看看:

  1. http://api.jqueryui.com/autocomplete/#method-search
  2. http://api.jqueryui.com/autocomplete/#method-enable
  3. http://api.jqueryui.com/autocomplete/#method-disable

我做了什么:

  1. Loaded/Initialized autocomplete 在文本框上然后禁用它。
  2. 每当触发按键事件时,我检查输入中的最后一个字符是否为 *

一个。如果是,则在文本框中启用 autocomplete 并强制 search,输入值不带 *。 b.如果不是,则禁用自动完成。