更改复选框上的下拉菜单
change dropdown on checkbox
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<label class="">
<input type="radio" id="check1" name="ohradio" checked>bike
</label>
<label class="">
<input type="radio" id="check2" name="ohradio">car
</label>
<label class="">
<input type="radio" id="check3" name="ohradio">cycle
</label>
<br /><br />
<select id="firstDropdown" class="">
<optgroup >
<option>bike 1</option>
<option>bike 2</option>
<option>bike 3</option>
</optgroup>
</select>
<br /><br />
<select id="secondDropdown" class="myHide">
<optgroup >
<option>car 1</option>
<option>car 2</option>
<option>car 3</option>
</optgroup>
</select>
<br /><br />
<select id="thirdDropdown" class="myHide">
<optgroup >
<option>cycle 1</option>
<option>cycle 2</option>
<option>cycle 3</option>
</optgroup>
</select>
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/custom.js"></script>
</body>
</html>
代码在style.css
.myHide{
display: none;
}
.myVisible{
display: block;
}
custom.js
中的代码在
下面$(document).ready(function (){
if(check2.checked){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myVisible');
$('#thirdDropdown').addClass('myHide');
}
if(check3.checked){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myVisible');
}
});
我想更改当用户选择不同的单选按钮时显示的下拉列表,例如,当他们单击自行车单选按钮时,应该显示自行车下拉列表,而其他下拉列表应该隐藏。然而,上面的代码不工作。我是jquery的初学者。
将无线电更改事件放入代码中。只需将javascript脚本更改为
$(document).ready(function (){
$("input[type=radio]").change(function(){
$("select").removeClass('myVisible myHide');
if(check1.checked){
$('#firstDropdown').addClass('myVisible');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myHide');
}
if(check2.checked){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myVisible');
$('#thirdDropdown').addClass('myHide');
}
if(check3.checked){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myVisible');
}
});
});
参见演示https://jsbin.com/lihusikoye/edit?html,css,js,output
应该是;
$(document).ready(function (){
if($('#check2').is(':checked'){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myVisible');
$('#thirdDropdown').addClass('myHide');
}
if($('#check3').is(':checked')){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myVisible');
}
});
你可以把你的收音机改成'
<label class="">
<input type="radio" id="check1" name="ohradio" data-show="firstDropdown" checked>bike
</label>
<label class="">
<input type="radio" id="check2" name="ohradio" data-show="secondDropdown">car
</label>
<label class="">
<input type="radio" id="check3" name="ohradio" data-show="thirdDropdown">cycle
</label>
并将脚本更改为
$(document).on("change", "input[name='ohradio']", function () {
$("select").fadeOut();
$("#"+$(this).data("show")).fadeIn();
});
这段代码应该是完全正确的:
$(document).ready(function (){
$("input[type='radio']").change(function(){
$("select").removeClass("myVisible");
if($('#check1').is(':checked')){
$('#firstDropdown').addClass('myVisible');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myHide');
}
if($('#check2').is(':checked')){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myVisible');
$('#thirdDropdown').addClass('myHide');
}
if($('#check3').is(':checked')){
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myVisible');
}
});
});
- 实现
input[type='radio']
的变更监听器 - 每次点击单选按钮时,必须从所有选择框中删除
myVisible
类。 - 当
check1
被选中时也设置类。
也有一个更短的代码的解决方案,但如果你是一个初学者,这是更好的理解和学习。
更短更灵活:
像这样改变选择框的id:
<select id="sel_check1" class="myVisible">
<optgroup >
<option>bike 1</option>
<option>bike 2</option>
<option>bike 3</option>
</optgroup>
</select>
<select id="sel_check2" class="myHide">
<optgroup >
<option>car 1</option>
<option>car 2</option>
<option>car 3</option>
</optgroup>
</select>
<select id="sel_check3" class="myHide">
<optgroup >
<option>cycle 1</option>
<option>cycle 2</option>
<option>cycle 3</option>
</optgroup>
</select>
你只需要js-code:
$(document).ready(function (){
$("input[type='radio']").change(function(){
$("select").removeClass("myVisible").addClass("myHide");
$("#sel_"+$(this).attr("id")).addClass("myVisible").removeClass("myHide");
});
});
试试这个,
$("input[type=radio]").change(function(){
if($("#check2").attr("checked")=="checked") {
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myVisible');
$('#thirdDropdown').addClass('myHide');
}
if($("#check3").attr("checked")=="checked") {
$('#firstDropdown').addClass('myHide');
$('#secondDropdown').addClass('myHide');
$('#thirdDropdown').addClass('myVisible');
}
});
在一些jquery版本attr
方法不工作。为此,你必须使用prop
相关文章:
- AngularJS下拉菜单多选不工作
- Bootstrap下拉菜单中的复选框允许多个复选框而不是一个
- 如何通过单击唯一按钮保存下拉菜单/复选框菜单选项和占位符值
- Bootstrap下拉菜单-仅复选框不选择文本
- 使用带有数据库信息的下拉菜单填充文本框
- 根据使用angularjs从下拉菜单中选择的选项选择适当的复选框
- 选中下拉 AND 复选框中的特定值时如何切换文本
- 如何在我的js下拉菜单/显示内容框上的不同内容之间切换
- 从依赖于下拉菜单的文本框中获取值,然后添加值
- 有没有一种方法可以允许只有在输入了数据的情况下才标记复选框
- 选择下拉菜单所选项目
- 下拉菜单使文本框显示为必填项,不显示时不显示
- 如何在未选中子复选框的情况下选中主复选框
- 在这种情况下如何处理复选框
- 下拉与复选框不起作用
- 默认情况下取消选中复选框
- 通过下拉更改复选框颜色
- 默认情况下,当复选框=选中时显示输入
- 使用jquery获取给定dom元素下的所有复选框
- 下拉菜单-单选按钮列表和Javascript方法问题