【问题标题】:Jquery autocomplete - change the response to <tab> and <enter> keystrokesJquery 自动完成 - 将响应更改为 <tab> 和 <enter> 击键
【发布时间】:2011-08-13 11:01:40
【问题描述】:

我的网站上有一个正常工作的自动完成框,我想像 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 与上面的代码相一致?

【问题讨论】:

  • @sscirrus:你遇到了什么问题? .bind() 代码怎么不工作?
  • @AndrewWhitaker 当我点击选项卡选择项目时,它确实会离开该字段。
  • @sscirrus:尝试使用event.which == ... 而不是event.keyCode
  • @AndrewWhitaker - 花了我一段时间,但我到了!谢谢安德鲁。
  • @sscirrus:太好了!最后是什么问题?

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


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多