2012-01-08 26 views
0

私はこの質問がカバーされていることを知っていますが、解決策のどれも私にとってはうまくいかないようです。これは私のコードですJQueryオートコンプリート検索ID

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の形式で配列からローカルに供給しています。しかし、私が得るのはusername-idだけです。 idを表示するのではなく、隠しフォーマットでidを取得するにはユーザー名が必要です。

おかげ

答えて

0

ソースは、対になった値(ラベルと値)の配列を含んでいます。ラベルは視覚的な表現で、値はコードによって処理されることを意図しています。

は、あなたは彼らがソース配列で指定されている場合ui.item.valueui.item.labelを使用することができます機能を選択します。

+0

["cars"、id]が返される配列がありますが、運がない – JamesBondInBlack

+0

配列を別の形式に変換する必要がありますか? – JamesBondInBlack

+0

あなたは[{label: 'cars'、value:id}、...]のような配列を送る必要があります。 – Marle1

関連する問題