2014-03-12 170 views
1

我有几个下拉菜单,当选择正确的值组合时,另一个下拉列表被填充。但是,一旦第三次下拉列表填充,我无法更改选择,我可以选择的唯一选项是第一个。该下拉列表不会更改为我选择的其他选项。我不确定我做错了什么。当任何选择列表改变(包括第三个),因为它被重新填充无法更改通过jQuery填充的选择选项

<select id="firstSelection"> 
    <option value='1'>One</option> 
    <option value='2'>Two</option> 
</select> 
<select id="secondSelection"> 
    <option value='1'>One</option> 
    <option value='2'>Two</option> 
</select> 
<select id="thirdSelection"></select> 


$('select').on('change', function() { 
    var firstValue = $('#firstSelection').val(); 
    var secondValue = $('#secondSelection').val(); 

    if(firstValue == 1 && secondValue == 2){ 
     $('#thirdSelection').html('<option>You</option>' + 
            '<option>Have</option>' + 
            '<option>Selected</option>' + 
            '<option>The</option>' + 
            '<option>Right</option>' + 
            '<option>Options</option>'); 
    } 
}); 

jsfiddle

回答

1

你的第三select列表不保留其选择的值。

我建议给前两个名单的一类,只与该类回应列表:

<select id="firstSelection" class="update"> 
    <option value='1'>One</option> 
    <option value='2'>Two</option> 
</select> 
<select id="secondSelection" class="update"> 
    <option value='1'>One</option> 
    <option value='2'>Two</option> 
</select> 
<select id="thirdSelection"></select> 
$('select.update').on('change', function() { 
    var firstValue = $('#firstSelection').val(); 
    var secondValue = $('#secondSelection').val(); 

    if (firstValue == 1 && secondValue == 2) { 
     $('#thirdSelection').html('<option>You</option>' + 
      '<option>Have</option>' + 
      '<option>Selected</option>' + 
      '<option>The</option>' + 
      '<option>Right</option>' + 
      '<option>Options</option>'); 
    } 
}); 

Working Example (jsFiddle)

1

因为你触发事件关闭$("select").change()任何时间任何的选择变化(包括第三个)你正在重新调整t他是第三个迫使第一个选择被选中的人。

所有你所要做的就是为你的事件触发选择从

$('select').on('change', function() { 

改变

$('#firstSelection, #secondSelection').on('change', function() { 

,并如预期它会奏效。

这是a working jsFiddle

相关问题