显示/隐藏下拉选项取决于另一个下拉选择
Show/Hide Dropdown Option Depend on Another Dropdown Selection
我正在尝试的是,我想显示基于第一个下拉选择的第二个下拉选项-
$(document).ready(function(){
$("#type").change(function(){
$(this).find("option:selected").each(function(){
if($(this).attr("value")=="1"){
$("#grouping_type option[value=" + 1 + "]").hide();
$("#grouping_type option[value=" + 3 + "]").hide();
$("#grouping_type option[value=" + 4 + "]").hide();
}
else{
$("#grouping_type option[value=" + 1 + "]").show();
$("#grouping_type option[value=" + 3 + "]").show();
$("#grouping_type option[value=" + 4 + "]").show();
}
if($(this).attr("value")=="2"){
$("#grouping_type option[value=" + 1 + "]").hide();
$("#grouping_type option[value=" + 5 + "]").hide();
}
else{
$("#grouping_type option[value=" + 1 + "]").show();
$("#grouping_type option[value=" + 5 + "]").show();
}
if($(this).attr("value")=="3"){
$("#grouping_type option[value=" + 2 + "]").hide();
$("#grouping_type option[value=" + 3 + "]").hide();
$("#grouping_type option[value=" + 4 + "]").hide();
$("#grouping_type option[value=" + 5 + "]").hide();
}
else{
$("#grouping_type option[value=" + 2 + "]").show();
$("#grouping_type option[value=" + 3 + "]").show();
$("#grouping_type option[value=" + 4 + "]").show();
$("#grouping_type option[value=" + 5 + "]").show();
}
});
}).change();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="type">
<option value="none">Select Any One</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
<br>
Dependable Dropdown Show/Hide
<br>
<select id="grouping_type">
<option value="none">Select Group Type</option>
<option value="1">group_1</option>
<option value="2">group_2</option>
<option value="3">group_3</option>
<option value="4">group_4</option>
<option value="5">group_5</option>
</select>
但它不起作用,它在做奇怪的行为。
有人能帮忙吗?
实际上您的嵌套if-else组合是错误的。让我们检查一下,如果我从类型组合中选择"一"。如果您检查值=="1"的第一个条件将隐藏选项,但
第二个如果检查发送回else语句及其再次设置的显示属性块等。
您可以在条件检查之前为所有选项显示setdisplay:block(.show()),然后为特定选项显示setdisplay:none(.hide())。
我更新了你的代码。这是
$(document).ready(function(){
$("#type").change(function(){
$(this).find("option:selected").each(function(){
$("#grouping_type option[value=" + 1 + "]").show();
$("#grouping_type option[value=" + 2 + "]").show();
$("#grouping_type option[value=" + 3 + "]").show();
$("#grouping_type option[value=" + 4 + "]").show();
$("#grouping_type option[value=" + 5 + "]").show();
if($(this).attr("value")=="1"){
$("#grouping_type option[value=" + 1 + "]").hide();
$("#grouping_type option[value=" + 3 + "]").hide();
$("#grouping_type option[value=" + 4 + "]").hide();
}
else if($(this).attr("value")=="2"){
$("#grouping_type option[value=" + 1 + "]").hide();
$("#grouping_type option[value=" + 5 + "]").hide();
}
else if($(this).attr("value")=="3"){
$("#grouping_type option[value=" + 2 + "]").hide();
$("#grouping_type option[value=" + 3 + "]").hide();
$("#grouping_type option[value=" + 4 + "]").hide();
$("#grouping_type option[value=" + 5 + "]").hide();
}
});
}).change();
});
第一个建议:保留不同的选择框本身,并根据选择进行隐藏和显示,原因是选项可能无法在不同的浏览器中隐藏和显示
第二个建议:使用选项组,可以帮助充分显示和隐藏特定类别的东西。
你可以试试这个-
$(document).ready(function()
{
$("#type").change(function ()
{
$("#grouping_type").children("option").show();
$("#grouping_type option[value='"+ $('#type').val() +"']").hide();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="type">
<option value="none">Select Any One</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
<br>
Dependable Dropdown Show/Hide
<br>
<select id="grouping_type">
<option value="none">Select Group Type</option>
<option value="1">group_1</option>
<option value="2">group_2</option>
<option value="3">group_3</option>
<option value="4">group_4</option>
<option value="5">group_5</option>
</select>
我想,你已经有了完整的答案:)。
相关文章:
- 当用户设置另一个选择值时,如何通过 Javascript 设置另一个选择值
- 从另一个选择框并使用数据库连接填充选择框
- 进行一个选择,自动发送表单并打开另一个选择(CodeIgniter)
- 从select中选择一个选项,然后使用Codeigniter在另一个选择框上显示数据
- 将选择下拉列表发送到另一个选择下拉列表
- JQuery以基于另一个选择列表填充选择列表
- 在填充另一个选择框时动态添加选择框
- 对两个具有相同类别的选择框进行边栏,但一个值的选择不会显示在另一个选择框中
- 当选项基于另一个选择时,保持显示所选选项
- 如何根据另一个选择框的值更新另一个选择框
- 在 JQuery 中,如何将选择选项的子集从一个选择菜单复制到另一个选择菜单
- 动态选择字段,在另一个选择字段 - Laravel 5.2 和 JS 中更改后重新填充
- 在 jQuery Mobile 中禁用从另一个选择中选择
- AngularJS 绑定要选择的数据下拉列表,当另一个选择下拉列表的值发生更改时
- Javascript 在另一个选择框选项上禁用选择框
- 当从第一个选项中选择一个选项时,如何取消隐藏另一个选择字段
- 在代码点火器中数据库中另一个选择框的更改事件时更改选择框的值
- 在更改另一个选择框后获取另一个选择框的值
- 动态添加 html 选择上单击另一个选择框选项
- 使用 jQuery 根据另一个选择框制作所需的选择框