JQuery自动完成:在焦点时防止文本替换

时间:2013-08-20 10:47:01

标签: jquery jquery-ui jquery-ui-autocomplete

我有以下自动填充代码:

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

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

它工作正常但是当我使用向上/向下键选择建议的文本时,所选文本会立即替换为文本字段。相反,我希望只有在选择按下ENTER时才能替换它。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:7)

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

重点快速参考:

  

将焦点移动到某个项目时触发(不选择)。默认   action是用文本字段的值替换   聚焦项目,但仅在事件由键盘触发时   相互作用。取消此事件会阻止该值   已更新,但不会阻止菜单项被聚焦。

代码:

$(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/

答案 1 :(得分:3)

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

试试这个。这不会改变你的焦点价值!请注意your-input-field-id是输入字段的ID。