2013-03-25 114 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