Jquery自动完成 - 将响应更改为<tab>和<enter>击键</enter> </tab>

时间:2011-04-26 23:53:05

标签: javascript ruby-on-rails-3 jquery-ui autocomplete jquery-ui-autocomplete

我的网站上有一个正常运行的自动填充功能框,我希望像SO中的“代码”自动填充一样工作。

期望的行为

看到下拉建议后,点击键盘上的tabenter'接受'突出显示的选项,添加一个空格,然后将焦点移到该行的末尾输入下一个标签。

当前行为

获取下拉列表后,点击tabenter会使用当前建议替换文本框的全部内容,并且光标会选择所有文本(而不是插入空格并指向在最后一行)。

我如何实现这一回应?


这是我的javascript:

$(function() { 
$( "#tags-field" )
    // don't navigate away from the field on tab when selecting an item
    .bind( "keydown", function( event ) {
        if ( event.keyCode === $.ui.keyCode.TAB &&
                $( this ).data( "autocomplete" ).menu.active ) {
            event.preventDefault();
        }
    })
    .autocomplete({
      source: function( request, response ) {
        $.ajax({
            url: "<%= autocomplete_tags_name_questions_url %>",
            dataType: "jsonp",
            data: {
                featureClass: "P",
                style: "full",
                maxRows: 12,
                name_startsWith: request.term
            },
            success: function( data ) {
                alert("Hi!"),
                response( $.map( data, function( item ) {
                    return {
                        label: item.name, //+ (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                        value: item.name
                    }
                }));
            }
        });
      },
      minLength: 2
  });
});

首先,顶部的.bind部分似乎不起作用。如何将代码here与上面的代码进行协调?

1 个答案:

答案 0 :(得分:1)