【问题标题】:jQuery UI Autocomplete displaying wrong valuejQuery UI 自动完成显示错误的值
【发布时间】:2014-07-25 05:04:17
【问题描述】:

jsFiddle 用于交互式示例

我有一个类似于示例的自动完成框。如果您开始输入以M 开头的名称,它将为您提供一个下拉列表。如果通过名称向下箭头(而不是用鼠标选择一个),您会注意到输入框填充的是值而不是人名。

HTML:

<input type="text" id="myInput" placeholder="Type M...">
<input type="hidden" id="myHidden">

脚本:

$("#myInput").autocomplete({
    delay: 500,

    minLength: 1,

    select: function(e, ui) {
        $(this).val(ui.item.label);
        $("#myHidden").val(ui.item.value);
        return false;
    },

    source: [{"label":"Marie","value":1},
             {"label":"Michelle","value":2},
             {"label":"Mia","value":3},
             {"label":"Melissa","value":4},
             // ...etc
    ];
});

当您选择一个名称时,它会正确地将其添加到输入中,但我试图摆脱在您通过选择箭头时显示的数值。

我在auto-complete docs 中没有看到任何事件可以挂钩来完成此操作。

我可能错过了它,还是有办法重组我的源数据来防止这种情况发生?

【问题讨论】:

    标签: javascript jquery jquery-ui autocomplete


    【解决方案1】:

    解决方案:

    $("#myInput").autocomplete({
        delay: 500,
        minLength: 1,
        select: function(event, ui) {
            event.preventDefault();
            $(this).val(ui.item.label);
            $("#myHidden").val(ui.item.value);
            return false;
        },
        focus: function(event, ui) {
            event.preventDefault();
            $(this).val(ui.item.label);
        },
        source: [{"label":"Marie","value":1},
                 {"label":"Michelle","value":2},
                 //...
                 {"label":"Maureen","value":40}]
    });
    

    JSFiddle demo

    【讨论】:

    • 啊诅咒,我掩盖了焦点,认为这是输入获得焦点的事件。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2011-02-03
    • 2012-06-09
    相关资源
    最近更新 更多