检查单选按钮是否被选中以及值是否匹配
Check if Radio Button is Checked and if Value Matches
绞尽脑汁想弄明白这个问题。我在 Jquery 方面不是最出色的,但我知道的足够多了。现在我正在尝试开发一些东西来检查组中的单选按钮是否被选中,然后查看它的值是否匹配,以便它可以显示正确的相应部分。我制作了一个接近我的暂存站点设置的粗糙 JSFiddle。
HTML:
<div>
<label>Oak</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Oak_0' checked="checked">
<label>Brown Maple</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Brown Maple_1'>
<label>Cherry</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Cherry_2'>
<label>Quartersawn White Oak</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Quartersawn White Oak_3'>
<label>Hard Maple</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Hard Maple_4'>
<label>Hickory</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Hickory_5'>
<!-- Many Others... -->
</div>
<div class="stains-container">
<div class="oak-stains-div">
<h4>Oak</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="b-maple-stains-div">
<h4>Brown Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="cherry-stains-div">
<h4>Cherry</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="qswo-stains-div">
<h4>QSWO</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="h-maple-stains-div">
<h4>Hard Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="hickory-stains-div">
<h4>Hickory</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
</div>
JS:
jQuery(function ($) {
// Create Variables
var stains = $(".stains-container");
// Check if Oak is checked
var $oakchecked = $("input.b-maple-stains, input.cherry-stains, input.qswo-stains, input.h-maple-stains, input.hickory-stains");
var $oakactive = $(".b-maple-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if B. Maple is checked
var $bmaplechecked = $("input.oak-stains, input.cherry-stains, input.qswo-stains, input.h-maple-stains, input.hickory-stains");
var $bmapleactive = $(".oak-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if Cherry is checked
var $cherrychecked = $("input.oak-stains, input.b-maple-stains, input.qswo-stains, input.h-maple-stains, input.hickory-stains");
var $cherryactive = $(".oak-stains-div li, .b-maple-stains-div li, .qswo-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if QSWO is checked
var $qswochecked = $("input.oak-stains, input.b-maple-stains, input.cherry-stains, input.h-maple-stains, input.hickory-stains");
var $qswoactive = $(".oak-stains-div li, .b-maple-stains-div li, .cherry-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if H. Maple is checked
var $hmaplechecked = $("input.oak-stains, input.b-maple-stains, input.cherry-stains, input.qswo-stains, input.hickory-stains");
var $hmapleactive = $(".oak-stains-div li, .b-maple-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .hickory-stains-div li");
// Check if Hickory is checked
var $hickorychecked = $("input.oak-stains, input.b-maple-stains, input.cherry-stains, input.qswo-stains, input.h-maple-stains");
var $hickoryactive = $(".oak-stains-div li, .b-maple-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .h-maple-stains-div li");
// Check if a button is pre-selected and if its value matches
var radio_buttons = $("input[name='tmcp_radio_0']");
if( radio_buttons.is(":checked") && /^Oak_\d$/.test($(this).val())) {
alert("OAK is selected");
$(".oak-stains-div").show();
$oakchecked.prop('checked', false);
$oakactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Brown Maple_\d$/.test($(this).val())) {
alert("B MAPLE is selected");
$(".b-maple-stains-div").show();
$bmaplechecked.prop('checked', false);
$bmapleactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Cherry_\d$/.test($(this).val())) {
alert("CHERRY is selected");
$(".cherry-stains-div").show();
$cherrychecked.prop('checked', false);
$cherryactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Quartersawn White Oak_\d$/.test($(this).val())) {
alert("QSWO is selected");
$(".qswo-stains-div").show();
$qswochecked.prop('checked', false);
$qswoactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Hard Maple_\d$/.test($(this).val())) {
alert("H MAPLE is selected");
$(".h-maple-stains-div").show();
$hmaplechecked.prop('checked', false);
$hmapleactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Hickory_\d$/.test($(this).val())) {
alert("HICKORY is selected");
$(".hickory-stains-div").show();
$hickorychecked.prop('checked', false);
$hickoryactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":not(:checked)")) {
alert("NOTHING is selected");
$(".stains-container").hide();
}
// Check if Oak is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Oak_\d$/.test($(this).val())) {
stains.show();
$(".oak-stains-div").show();
$oakchecked.prop('checked', false);
$oakactive.removeClass( "tc-active" );
} else {
$(".oak-stains-div").hide();
}
});
// Check if B. Maple is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Brown Maple_\d$/.test($(this).val())) {
stains.show();
$(".b-maple-stains-div").show();
$bmaplechecked.prop('checked', false);
$bmapleactive.removeClass( "tc-active" );
} else {
$(".b-maple-stains-div").hide();
}
});
// Check if Cherry is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Cherry_\d$/.test($(this).val())) {
stains.show();
$(".cherry-stains-div").show();
$cherrychecked.prop('checked', false);
$cherryactive.removeClass( "tc-active" );
} else {
$(".cherry-stains-div").hide();
}
});
// Check if QSWO is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Quartersawn White Oak_\d$/.test($(this).val())) {
stains.show();
$(".qswo-stains-div").show();
$qswochecked.prop('checked', false);
$qswoactive.removeClass( "tc-active" );
} else {
$(".qswo-stains-div").hide();
}
});
// Check if Hard Maple is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Hard Maple_\d$/.test($(this).val())) {
stains.show();
$(".h-maple-stains-div").show();
$hmaplechecked.prop('checked', false);
$hmapleactive.removeClass( "tc-active" );
} else {
$(".h-maple-stains-div").hide();
}
});
// Check if Hickory is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Hickory_\d$/.test($(this).val())) {
stains.show();
$(".hickory-stains-div").show();
$hickorychecked.prop('checked', false);
$hickoryactive.removeClass( "tc-active" );
} else {
$(".hickory-stains-div").hide();
}
});
});
我的fiddle:https://jsfiddle.net/amishdirect/h94c7rsw/5/
我正在努力处理的部分是让它检查输入是否为 "checked" 以及它的值是否匹配。区域 /^Oak_\d$/.test($(this).val())
是因为值会根据顺序发生变化(即:Oak_0、Oak_1、Oak_2 等)。无论它在哪里,我都试图让它匹配输入。现在我被卡住了,因为我正在努力让它检查两者和 return 正确的东西。我还要说 JS 很粗糙,很可能可以改进和压缩。这正是我所拥有的,所以我也感谢您提出的任何改进建议!
您可以使用属性选择器。
var oak_checked = $(":radio[value^=oak]").is(":checked");
您的代码不起作用,因为 this
不是选中的按钮。测试 .is(":checked")
不会将 this
的值更改为发现可能被选中的任何按钮。
最好使用更好的 class 名称来帮助选择器。考虑以下因素。
JSFiddle:https://jsfiddle.net/Twisty/zpwc92rv/24/
HTML
<ul class="bases">
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='oak'>
<label>Oak</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='b-maple'>
<label>Brown Maple</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='cherry'>
<label>Cherry</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='qswo'>
<label>Quartersawn White Oak</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='h-maple'>
<label>Hard Maple</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='hickory'>
<label>Hickory</label>
</li>
</ul>
<div class="stains">
<div class="oak stain">
<h4>Oak</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="b-maple stain">
<h4>Brown Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="cherry stain">
<h4>Cherry</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="qswo stain">
<h4>QSWO</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="h-maple stain">
<h4>Hard Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="hickory stain">
<h4>Hickory</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
</div>
JavaScript
$(function() {
function hideAll() {
$(".stains .stain").hide();
}
function uncheckAll() {
$(".stain input:checked").prop("checked", false);
}
hideAll();
$(".bases input").on("change", function(e) {
$(".selected").removeClass("selected");
$(this).parent().addClass("selected");
var s = $(this).val();
hideAll();
uncheckAll();
$(".stain." + s).show();
});
$(".bases input:first").trigger("click");
});
如您所见,隐藏所有项目,然后根据点击的 value
只显示需要的项目会更容易。
绞尽脑汁想弄明白这个问题。我在 Jquery 方面不是最出色的,但我知道的足够多了。现在我正在尝试开发一些东西来检查组中的单选按钮是否被选中,然后查看它的值是否匹配,以便它可以显示正确的相应部分。我制作了一个接近我的暂存站点设置的粗糙 JSFiddle。
HTML:
<div>
<label>Oak</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Oak_0' checked="checked">
<label>Brown Maple</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Brown Maple_1'>
<label>Cherry</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Cherry_2'>
<label>Quartersawn White Oak</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Quartersawn White Oak_3'>
<label>Hard Maple</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Hard Maple_4'>
<label>Hickory</label>
<input type='radio' name="tmcp_radio_0" class='some-class-of-radiogroup' value='Hickory_5'>
<!-- Many Others... -->
</div>
<div class="stains-container">
<div class="oak-stains-div">
<h4>Oak</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="b-maple-stains-div">
<h4>Brown Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="cherry-stains-div">
<h4>Cherry</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="qswo-stains-div">
<h4>QSWO</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="h-maple-stains-div">
<h4>Hard Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="hickory-stains-div">
<h4>Hickory</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
</div>
JS:
jQuery(function ($) {
// Create Variables
var stains = $(".stains-container");
// Check if Oak is checked
var $oakchecked = $("input.b-maple-stains, input.cherry-stains, input.qswo-stains, input.h-maple-stains, input.hickory-stains");
var $oakactive = $(".b-maple-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if B. Maple is checked
var $bmaplechecked = $("input.oak-stains, input.cherry-stains, input.qswo-stains, input.h-maple-stains, input.hickory-stains");
var $bmapleactive = $(".oak-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if Cherry is checked
var $cherrychecked = $("input.oak-stains, input.b-maple-stains, input.qswo-stains, input.h-maple-stains, input.hickory-stains");
var $cherryactive = $(".oak-stains-div li, .b-maple-stains-div li, .qswo-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if QSWO is checked
var $qswochecked = $("input.oak-stains, input.b-maple-stains, input.cherry-stains, input.h-maple-stains, input.hickory-stains");
var $qswoactive = $(".oak-stains-div li, .b-maple-stains-div li, .cherry-stains-div li, .h-maple-stains-div li, .hickory-stains-div li");
// Check if H. Maple is checked
var $hmaplechecked = $("input.oak-stains, input.b-maple-stains, input.cherry-stains, input.qswo-stains, input.hickory-stains");
var $hmapleactive = $(".oak-stains-div li, .b-maple-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .hickory-stains-div li");
// Check if Hickory is checked
var $hickorychecked = $("input.oak-stains, input.b-maple-stains, input.cherry-stains, input.qswo-stains, input.h-maple-stains");
var $hickoryactive = $(".oak-stains-div li, .b-maple-stains-div li, .cherry-stains-div li, .qswo-stains-div li, .h-maple-stains-div li");
// Check if a button is pre-selected and if its value matches
var radio_buttons = $("input[name='tmcp_radio_0']");
if( radio_buttons.is(":checked") && /^Oak_\d$/.test($(this).val())) {
alert("OAK is selected");
$(".oak-stains-div").show();
$oakchecked.prop('checked', false);
$oakactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Brown Maple_\d$/.test($(this).val())) {
alert("B MAPLE is selected");
$(".b-maple-stains-div").show();
$bmaplechecked.prop('checked', false);
$bmapleactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Cherry_\d$/.test($(this).val())) {
alert("CHERRY is selected");
$(".cherry-stains-div").show();
$cherrychecked.prop('checked', false);
$cherryactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Quartersawn White Oak_\d$/.test($(this).val())) {
alert("QSWO is selected");
$(".qswo-stains-div").show();
$qswochecked.prop('checked', false);
$qswoactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Hard Maple_\d$/.test($(this).val())) {
alert("H MAPLE is selected");
$(".h-maple-stains-div").show();
$hmaplechecked.prop('checked', false);
$hmapleactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":checked") && /^Hickory_\d$/.test($(this).val())) {
alert("HICKORY is selected");
$(".hickory-stains-div").show();
$hickorychecked.prop('checked', false);
$hickoryactive.removeClass( "tc-active" );
} else if( radio_buttons.is(":not(:checked)")) {
alert("NOTHING is selected");
$(".stains-container").hide();
}
// Check if Oak is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Oak_\d$/.test($(this).val())) {
stains.show();
$(".oak-stains-div").show();
$oakchecked.prop('checked', false);
$oakactive.removeClass( "tc-active" );
} else {
$(".oak-stains-div").hide();
}
});
// Check if B. Maple is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Brown Maple_\d$/.test($(this).val())) {
stains.show();
$(".b-maple-stains-div").show();
$bmaplechecked.prop('checked', false);
$bmapleactive.removeClass( "tc-active" );
} else {
$(".b-maple-stains-div").hide();
}
});
// Check if Cherry is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Cherry_\d$/.test($(this).val())) {
stains.show();
$(".cherry-stains-div").show();
$cherrychecked.prop('checked', false);
$cherryactive.removeClass( "tc-active" );
} else {
$(".cherry-stains-div").hide();
}
});
// Check if QSWO is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Quartersawn White Oak_\d$/.test($(this).val())) {
stains.show();
$(".qswo-stains-div").show();
$qswochecked.prop('checked', false);
$qswoactive.removeClass( "tc-active" );
} else {
$(".qswo-stains-div").hide();
}
});
// Check if Hard Maple is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Hard Maple_\d$/.test($(this).val())) {
stains.show();
$(".h-maple-stains-div").show();
$hmaplechecked.prop('checked', false);
$hmapleactive.removeClass( "tc-active" );
} else {
$(".h-maple-stains-div").hide();
}
});
// Check if Hickory is selected or pre-selected
radio_buttons.on('change',function(){
if ( /^Hickory_\d$/.test($(this).val())) {
stains.show();
$(".hickory-stains-div").show();
$hickorychecked.prop('checked', false);
$hickoryactive.removeClass( "tc-active" );
} else {
$(".hickory-stains-div").hide();
}
});
});
我的fiddle:https://jsfiddle.net/amishdirect/h94c7rsw/5/
我正在努力处理的部分是让它检查输入是否为 "checked" 以及它的值是否匹配。区域 /^Oak_\d$/.test($(this).val())
是因为值会根据顺序发生变化(即:Oak_0、Oak_1、Oak_2 等)。无论它在哪里,我都试图让它匹配输入。现在我被卡住了,因为我正在努力让它检查两者和 return 正确的东西。我还要说 JS 很粗糙,很可能可以改进和压缩。这正是我所拥有的,所以我也感谢您提出的任何改进建议!
您可以使用属性选择器。
var oak_checked = $(":radio[value^=oak]").is(":checked");
您的代码不起作用,因为 this
不是选中的按钮。测试 .is(":checked")
不会将 this
的值更改为发现可能被选中的任何按钮。
最好使用更好的 class 名称来帮助选择器。考虑以下因素。
JSFiddle:https://jsfiddle.net/Twisty/zpwc92rv/24/
HTML
<ul class="bases">
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='oak'>
<label>Oak</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='b-maple'>
<label>Brown Maple</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='cherry'>
<label>Cherry</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='qswo'>
<label>Quartersawn White Oak</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='h-maple'>
<label>Hard Maple</label>
</li>
<li>
<input type='radio' name="tmcp_radio_0" class='top radiogroup' value='hickory'>
<label>Hickory</label>
</li>
</ul>
<div class="stains">
<div class="oak stain">
<h4>Oak</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="b-maple stain">
<h4>Brown Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="cherry stain">
<h4>Cherry</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="qswo stain">
<h4>QSWO</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="h-maple stain">
<h4>Hard Maple</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
<div class="hickory stain">
<h4>Hickory</h4>
<label>Michael's Cherry</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Rich Tobacco</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<label>Dark Knight</label>
<input type='radio' name="tmcp_radio_1" class='some-class-of-radiogroup' value='value'>
<!-- Many Others... -->
</div>
</div>
JavaScript
$(function() {
function hideAll() {
$(".stains .stain").hide();
}
function uncheckAll() {
$(".stain input:checked").prop("checked", false);
}
hideAll();
$(".bases input").on("change", function(e) {
$(".selected").removeClass("selected");
$(this).parent().addClass("selected");
var s = $(this).val();
hideAll();
uncheckAll();
$(".stain." + s).show();
});
$(".bases input:first").trigger("click");
});
如您所见,隐藏所有项目,然后根据点击的 value
只显示需要的项目会更容易。