2014-03-12 89 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

相關問題