2013-03-25 39 views
0

的Jquery:如何變化的動態組合框的行爲

$('body').on('change', '.combo', function() { 
    var selectedValue = $(this).val(); 

    if ($(this).find('option').size() > 2) { 
     var newComboBox = $(this).clone(); 
     var thisComboBoxIndex = $(this).attr('id').replace("combo", ""); 
     var newComboBoxIndex = thisComboBoxIndex + 10; 

     $('.parentCombo' + thisComboBoxIndex).remove(); 

     if (selectedValue != '') { 
      newComboBox.attr('data-index', newComboBoxIndex); 
      newComboBox.attr('id', 'combo' + thisComboBoxIndex); 
      newComboBox.find('option[val="' + selectedValue + '"]').remove(); 
      $('div.'+thisComboBoxIndex).append(newComboBox); 
     } 
    } 
});​ 

HTML:

<div class="1"> 
    <select id="combo1" class="combo" data-index="1"> 
     <option></option> 
     <option val="1">Opt1</option> 
     <option val="2">Opt2</option> 
     <option val="3">Opt3</option> 
    </select> 
</div> 
<br> 
<div class="2"> 
    <select id="combo2" class="combo" data-index="2"> 
     <option></option> 
     <option val="1">Opt1</option> 
     <option val="2">Opt2</option> 
     <option val="3">Opt3</option> 
    </select> 
</div> 

Working Fiddle

正如你可以在小提琴看,如果你選擇選項2下一個組合框選項將爲:選項1和選項3.

W我想要的帽子是:

如果我選擇選項2,則下一個組合框選項應該是:選項3(僅)。

這意味着根據選擇的選項,下一個combobx(動態的)不應該包含低於自身的選項。

這怎麼做?

回答

1

看到這個:

newComboBox.find('option').each(function(){ 
    if(this.value < selectedValue) $(this).remove(); 
}); 

Sample

+0

我爲遲到的回答很抱歉。我現在正在測試它,它幾乎是我正在尋找的:)只需要一個tweek。當你選擇一個選項時,下一個組合框不應該被填充,應該是空的 – pleaseDeleteMe 2013-04-02 09:32:58

+0

@skdnewbie ..看到這個小提琴... http://jsfiddle.net/JaVVe/40/ – Anujith 2013-04-02 11:44:12

+0

我明白了,我也這樣做了:)但現在我有一個奇怪的問題:想象100個選項(1-100),當我選擇任何選項時,例如50,50以下的所有選項消失,除了1-10之間的選項。奇怪的!它就像(1,2,3,4,...,10,51,52,53,...,100) – pleaseDeleteMe 2013-04-02 14:01:58