2016-07-29 141 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