2016-07-29 88 views
-1

我不是專家與javascript & jquery,我只是GOOGLE了很多天,但無法找到答案。填充從各種選項中選擇的選項 - jquery

如何使用從其他選擇中選擇的選項填充選擇。對於從第一選擇此例中,我選擇曼聯,從第二我選擇波哥大和第三必須與曼徹斯特和波哥大填充:

Select One <br> 
<select id="city" name="city"> 
<option value="0"></option> 
<option value="1">Manchester</option> 
<option value="2">Paris</option> 
<option value="3">Madrid</option> 
</select><br> 

Select 2 <br> 
<select id="city2" name="city2"> 
<option value="0"></option> 
<option value="4">Bogota</option> 
<option value="5">Buenos Aires</option> 
<option value="6">Quito</option> 
</select><br> 

Select 3, populated whit the options of the previous 2 selects <br> 
<select id="street" name="street"> 
<option value="0"></option> 
<option value="1">Manchester</option> 
<option value="4">Bogota</option> 
</select> 

的幫助我非常感謝。

+2

你可以添加你在JS中試過的東西嗎? – guradio

+0

請參閱[this](http://stackoverflow.com/a/10571044/4875631)回答上一條路線 – FrankerZ

+0

對不起,我對js或jquery的知識知之甚少,所以我沒有腳本。我搜索了很多天,但沒有發現類似的東西。 – hgarciap

回答

1

下面的jQuery將刷新街道選擇列表任何時候改變一個選擇類refresh就可以了。

function refreshList() { 
 
    
 
    $('#street option').remove(); //Clear the dropdown 
 
    $('#street').append('<option value="0"></option>'); //Add the blank option 
 
    
 
    $('.refresh').each(function() { //Loop through every instance of class 'refresh' 
 
    
 
    var v = $(this).val(); //Selected Value 
 
    var t = $(this).find('option[value="' + v + '"]').text(); //Selected Text 
 
    
 
    if (v != 0) { //If value isn't blank, add option to Street 
 
    $("#street").append('<option value="' + v + '">' + t + '</option>'); 
 
    } 
 
    }); 
 
    
 
} 
 

 
$(document).ready(function() { //When the page loads 
 
    
 
    $('.refresh').change(function() { //Initialize a click-event listener for class 'refresh' 
 
    
 
    refreshList(); //Run above function 
 
    
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Select One <br> 
 
<select id="city" name="city" class="refresh"> 
 
<option value="0"></option> 
 
<option value="1">Manchester</option> 
 
<option value="2">Paris</option> 
 
<option value="3">Madrid</option> 
 
</select><br> 
 

 
Select 2 <br> 
 
<select id="city2" name="city2" class="refresh"> 
 
<option value="0"></option> 
 
<option value="4">Bogota</option> 
 
<option value="5">Buenos Aires</option> 
 
<option value="6">Quito</option> 
 
</select><br> 
 

 
Select 3, populated with the options of the previous 2 selects <br> 
 
<select id="street" name="street"> 
 
<option value="0"></option> 
 
<option value="1">Manchester</option> 
 
<option value="4">Bogota</option> 
 
</select>

+0

是的,這有效,但如果我有其他選擇,我不想得到任何價值? – hgarciap

+0

**請參閱我上面更新的代碼片段,該代碼片段現在只能用於城市和城市2選擇列表**。除了街道以外,你可以指定你想要包含哪些街區:$('#city,#city2'),而不是$('select')。 ')'或指定所有下拉菜單*除了* street,selectX,selectY:'$(select).not('#street,#selectX,#selectY')' 也許更乾淨的方法是:一個關於你想要包含的選擇的類,然後使用選擇器'$('。className')' - 然後你可以把這個類放在你想要拾取的任何選擇上。 – Santi

+0

我認爲$('。className')是最好的選擇,但不知道在哪裏改變它。你能更新臨時代碼段代碼嗎? – hgarciap

0

$('select#city').change(function() { 
 
    var $selected = $('option:selected', this).clone()//make a copy of selected option 
 

 
    $('#street').append($selected)//put the selected option in the 3rd select 
 
}) 
 

 
$('select#city2').change(function() { 
 
    var $selected = $('option:selected', this).clone();//make a copy of selected option 
 

 
    $('#street').append($selected)//put the selected option in the 3rd select 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Select One 
 
<br> 
 
<select id="city" name="city"> 
 
    <option value="0"></option> 
 
    <option value="1">Manchester</option> 
 
    <option value="2">Paris</option> 
 
    <option value="3">Madrid</option> 
 
</select> 
 
<br>Select 2 
 
<br> 
 
<select id="city2" name="city2"> 
 
    <option value="0"></option> 
 
    <option value="4">Bogota</option> 
 
    <option value="5">Buenos Aires</option> 
 
    <option value="6">Quito</option> 
 
</select> 
 
<br>Select 3, populated whit the options of the previous 2 selects 
 
<br> 
 
<select id="street" name="street"> 
 
    <option value="0"></option> 
 
</select>

使用.clone()做出選擇的選項

說明的副本:創建匹配的元素的深層副本。

然後使用.append()插入克隆元件第三選擇

說明:插入內容,由參數指定的,所述集合中匹配的元素中的每個元素的結束。

+0

謝謝,它是工作,但如果我再次選擇其他城市從以前的選擇它重複在街道選擇城市。 – hgarciap

+0

你需要在選擇另一個後清理3選擇?你可以添加更多的信息?第3個選擇應該只包含2個值?每個選擇一個? – guradio

+0

更多信息: 你需要清除3選擇後選擇另一個? A /否,如果我再次從第一個選擇其他選項,第三個應該通過這個新選擇的選項 第三選擇應該只包含2個值?每個選擇一個? A/3選擇可以包含很多值 – hgarciap