JQuery自动完成检索ID

时间:2012-01-08 10:30:08

标签: jquery autocomplete

我知道这个问题已被涵盖,但没有一个解决方案似乎对我有用。这是我的代码

    var dialogForm = getDialogForm();

    var $dialog = $('<div></div>').html(dialogForm)


    .dialog
    ({
         autoOpen:      false,
         title:         "New Message",
         draggable:     false,
         modal:         true,
         dialogClass:   "bg_FFF",
         position:      ["", 120],
         resizable:     false,
         width:         440,
         beforeClose:   function(event, ui){ $('.contactsInput').val(""); 
                                             $('.msgInput').val(""); 
                                             $(".removeContact").parent().remove();
                                             ignored.length = 0;}
    });


    $('.cancelDialog').live("click", function() 
    {
        //close dialog
        $dialog.dialog('close');
    });


    //send message is clicked
    $(".sendMsg").live("click", function()
    { 
         sendMsg();
    });


    //items to be ingnored
    var ignored = [];

    var contactsArray = getUserContacts(); 

    //attach autocomplete  
    $(".contactsInput").autocomplete({  

    minLength: 1,

    //define callback to format results  
    source: function(req, add){  

        //create an empty array
        var contactsList = [];

        //process response  
        $.each(contactsArray, function(index, val)
        {
            if(ignored.indexOf(val) == -1) 
            {
                contactsList.push(val);
            }
        });

        //pass array to callback            
        add( $.ui.autocomplete.filter( contactsList, extractLast( req.term ) ) );

    }, 


    //define select handler  
    select: function(e, ui){  

        //prevent default action
        e.preventDefault();alert( ui.item.toSource());

        //create formatted contact  
        var contact = ui.item.value, 

        span = $("<span>").text(contact); 

        a = $("<a>").addClass("removeContact").attr({  title: "Remove " + contact  }).text("x").appendTo(span);  

        //add contact to contact div  
        span.insertBefore(".contactsInput");

        //clear input
        $(".contactsInput").val("").css("top", 2);

        ignored.push(ui.item.value)


    },  

    //define select handler  
    change: function() { 

        //prevent 'to' field being updated and correct position  
        $(".contactsInput").val("").css("top", 2);  

        }  
    }); 

我正在尝试检索自动填充中名称的ID。我正在以一个数组的本地数据源以username-id格式提供数据源。但我得到的是用户名-id。我需要显示用户名而不是id,并以隐藏格式检索id。

由于

1 个答案:

答案 0 :(得分:0)

来源包含一系列配对值(标签和值)。 Label是可视化表示,值应由您的代码处理。

选择功能中,您可以使用 ui.item.value ui.item.label 来源数组。