2012-10-16 51 views
0

我有一些數據,我動態綁定到一個下拉列表如下:如何在值重複時將值綁定到Dropdown一次?

if (product.oPTIONS.length > 0) { 
    $.each(product.oPTIONS, function (idx, options) { 
     /*appending the each option to a label*/ 
     $("#productdetails").append('<div class="clear">'); 
     $("#productdetails").append('<label>' + options.OptionName + '</label>'); 
     if (options.values.length > 0) { 
      var stringBuilder = []; 
      /*Creating a select tag for the Retrieved options*/ 
      $("#productdetails").append('<select id="' + options.OptionName + '" onchange="getimage($(this).val())" ><option>Choose</option>'); 
      $.each(options.values, function (idx, values) { 
      /*Binding options to the Created select tag For an Option based on option Id*/   
      $("" + "#" + options.OptionName + "").append('<option value="' + values.sku + '">' + values.OptionValue + '</option>'); 
     }); 
     stringBuilder.push('</select>'); 
     $("#productdetails").append(stringBuilder.join('')); 
    } 
    $("#productdetails").append('</div>'); 
    }) 
} 

現在我的情況是,某些下拉可能在這種情況下重複的值只有一個值應綁定到下降。

example 
    Size:DropDown 
    [S] 
    [XXl] 
    [s] 
    [xl] 
    Fit:DropDown 
    [Slim] 
    [Regular] 
    [Slim] 
    [AppleCut] 

這樣的話,在這裏我想只綁定[S],[修身]大小,飛度的下拉列表中只有一次。

回答

0

添加的選項數組,因爲他們被認爲是列入選擇,檢查其針對陣列的存在列入前:

var optionsarray = new Array(); 
$.each(options.values, function (idx, values) { 
    if (jQuery.inArray(values.OptionValue.toUpperCase(), optionsarray) < 0) {        
     $("" + "#" + options.OptionName + "").append('<option value="' + values.sku + '">' + values.OptionValue + '</option>');   
    } 
    optionsarray.push(values.OptionValue.toUpperCase()); 
}); 


參見:http://api.jquery.com/jQuery.inArray/

在這種情況下
+0

只有重複的價值是綁定的所有都被刪除 – SoftwareNerd

+0

良好的捕獲 - 固定。 – coderabbi

+0

非常感謝好友... – SoftwareNerd