jQuery自动完成并处理值/标签问题

tim*_*one 6 ajax jquery jquery-ui jquery-ui-autocomplete

我正在尝试使用jQuery自动完成功能.我已经指定了一些数据但是当我在下拉列表中选择一个项目时,它总是将值推送到元区域元素中.我想要标签.这该怎么做?试图让它在#meta-area而不是值中显示标签.

HTML:

 ...
 area:<input type='text' size='20' id='meta-area' />
   <input type='hidden' id='meta_search_ids' value='' />
 ...
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$(document).ready(function(){
    var data =[
        {'label':'Core','value':1},
        {'label':' Selectors','value':2},
        {'label':'Events' ,'value':3}]; 

        $("#meta-area").autocomplete({source:data,
            select: function(e, ui) {
                $("#meta_search_ids").val(ui.item.value);
                // this part is not working
                //$(this).val(ui.item.label);
                $('#meta-area').text('this is what I want');
            }
        });
    //alert("this loaded");
});
Run Code Online (Sandbox Code Playgroud)

And*_*ker 16

select事件的默认操作ui.item.value位于input.您需要使用preventDefault事件处理程序:

$(document).ready(function(){
    var data =[
        {'label':'Core','value':1},
        {'label':' Selectors','value':2},
        {'label':'Events' ,'value':3}]; 

    $("#meta-area").autocomplete({
        source:data,
        select: function(e, ui) {
            e.preventDefault() // <--- Prevent the value from being inserted.
            $("#meta_search_ids").val(ui.item.value);

            $(this).val(ui.item.label);
        }
    });
    //alert("this loaded");
});
Run Code Online (Sandbox Code Playgroud)

示例: http ://jsfiddle.net/UGYzW/6/