2013-08-20 46 views
2

我有自动完成下面的代码:JQuery的自动完成:防止替换文本当焦点

$(function() { 
    var availableTags = [ 
       " x", 
       "y", 
       "z", 
       "l", 
       "m", 
       "n", 
       "o", 
       ]; 

    $(".tags").autocomplete({ 
      source: availableTags,position: { my : "left+2 bottom-50" , of:".tags"} 
    }); 
}); 

它工作正常,但是当我使用上/下键选择建议的文本,选中的文本被立即替换文本域。相反,我只希望在选择时按下ENTER键来替换它。任何方式来实现这一目标?

回答

7

当查看建议元素(使用箭头键)也会触发focus事件,因此您可以使用preventDefault方法简单地阻止默认操作。上聚焦

快速参考:

当焦点被移动到一个物品(未选择)触发。默认的 操作是将文本字段的值替换为 焦点项目的值,但仅当该事件是由键盘 交互触发的。取消此事件可防止更新值为 ,但不会阻止重点关注菜单项。

代码:

$(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, 
     position: { 
      my: "left bottom", 
      at: "left top", 
     }, 
     focus: function (event, ui) { 
      event.preventDefault(); 
     } 

    }); 
}); 

演示:http://jsfiddle.net/IrvinDominin/TgmPQ/

+0

谢谢,效果很好! – Aneesh

3
focus: function (event, ui) { 
     event.preventDefault(); 
} 

试试这个。这不会改变你的重点价值!请注意0​​是您的输入字段的编号。

+0

你要的preventDefault让这项工作,设置的值是不够的。看到我的回答 –

+0

是的,谢谢你的建议。 – deepakb