2012-03-26 1 views
4

У меня есть два объекта JSONPopulate Выберите С OPTGROUP Из двух отдельных JSon объектов JQuery

var type = [{"Id":1,"Name":"This is a name"}]; 
var subType = [{"Id":2,"ParentId":1,"Name":"This is a name"},]; 

subType.ParentId ссылается на type.Id

Я хочу, чтобы иметь возможность заполнить избранная в JQuery, имеющих

<SELECT> 
<OPTGROUP LABEL="type.Name" id="type.Id">   
<OPTION LABEL="subType.Name" value="subType.Id">subType.Name</OPTION>     
</OPTGROUP> 
</SELECT> 

ответ

0

Adding optgroups to select using javascript dynamically

Вы смогли criate dinamamicaly совместное MBO. Доступ. Значения json находятся в этом вопросе.

How to access Json Object which has space in its name?

Есть несколько ситуаций, в сообщениях, чтобы решить Ваш вопрос.

+0

Не очень полезно ... –

+0

Вам нужно более конкретно – Jones

+0

я решил, используя 2 для петель! Спасибо –

2

В приведенном ниже коде используется только «select» в качестве селектора jquery, поэтому он будет влиять на все избранные ячейки на странице. Возможно, вы захотите это изменить.

Код, приведенный ниже, также не обрабатывает один из выбранных вариантов, который, вероятно, вы должны соблюдать.

var type = [{"Id":1,"Name":"This is a name"}]; 
var subType = [{"Id":2,"ParentId":1,"Name":"This is a name"}]; 

var output = []; 
$.each(type, function(){ 
    //for each type add an optgroup 
    output.push('<optgroup label="'+this.Name+'">'); 
    var curId = this.Id; 

    //linear search subTypes array for matching ParentId 
    $.each(subType, function(k,v){ 
     if(this.ParentId = curId){ 

     output.push('<option label="'+this.Name +'" value="'+ this.Id +'">'+ this.Name +'</option>'); 

     //DELETE the element from subType array so the next search takes less time 
     subType.splice(k,1); 
    } 
    }); 
    output.push('</optgroup>'); 
}); 

//change the 'select' here to the id of your selectbox 
$('select').html(output.join('')); 
+0

Я использовал ваш метод, и он частично работает, но можете ли вы сказать мне, что случилось с http://jsfiddle.net/kvkxX/? –

+0

Изменен формат вашего подтипа. Были некоторые дополнительные «[]» http://jsfiddle.net/kvkxX/1/ –

+0

Спасибо, работает хорошо! :) –