jQuery自动完成问题 - Shift键的行为与Return Key相同

时间:2010-05-07 23:04:55

标签: javascript jquery autocomplete jquery-autocomplete

请参阅:http://www.airbnb.com/

在搜索栏中,开始输入“san f”(无引号,全部小写),然后点击Return(或Enter)。 “旧金山”自动完成。这很好!

现在清除搜索字段并重新开始。键入“San F”和繁荣 - “旧金山”一旦击中Shift就会自动完成。这不是预期的。

这发生在FF& Safari,但在其他地方未经测试。我查看了jQuery自动完成源代码,一切看起来都很正常。

以前有没有人经历过这个?

3 个答案:

答案 0 :(得分:1)

要解决此问题:

对KEY对象添加:

    SHIFT: 16,
    CTRL: 17,
    ALT: 18

在onChange函数的最顶部添加:

if ( jQuery.inArray(lastKeyPressCode, [KEY.SHIFT, KEY.CTRL,
       KEY.ALT]) !== -1 )
                return; 

答案 1 :(得分:1)

我认为在自动填充配置中autoFill: true已定义。删除这一个它将解决问题。但是在写完“san f”后的情况下,它不会自动填写“旧金山,CA”。

答案 2 :(得分:1)

在自动填充功能中尝试搜索选项,如下所示:

$(function() {
var availableTags = [
  "ActionScript",
  "AppleScript",
  "Asp",
  "BASIC",
  "C",
  "C++",
  "Clojure",
  "COBOL",
  "ColdFusion",
  "Erlang",
  "Fortran",
  "Groovy",
  "Haskell",
  "Java",
  "JavaScript",
  "Lisp",
  "Perl",
  "PHP",
  "Python",
  "Ruby",
  "Scala",
  "Scheme"
];
$( "#tags" ).autocomplete({
  source: availableTags,
    search: function( event, ui ) {
       if(event.which == 16 || event.which == 17 )
        event.preventDefault();  
    }
});