使用带有 Jquery 的周围标签文本查找单选框和复选框名称
Find radio and checkbox name using surrounding labeltext with Jquery
我正在尝试使用 Jquery 完成以下操作:
当 "No Top" 单选按钮为 "checked" 时,它应该禁用并且 "uncheck" 在复选框 selection 中完成的任何 selection。
如果用户 select 另一个单选按钮选项,例如 "Black Top",则应再次启用复选框 selection。
我正在尝试解决这个问题,但无法弄清楚如何使用标签文本找到正确的单选按钮或复选框(我只能继续这样做)。我无法使用 ID,因为它始终以不同的名称呈现。
说明:
第一个 div class "option-box" 包含收音机,然后第二个 div class "option-box" 带有复选框。
该页面有更多控件,包括单选框和复选框,但它只是第二个 "option-class" 我正在尝试操作的复选框。
有什么想法吗?
这是我的控件生成的代码(我无法修改):
<div class="option-box">
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_0" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="0" checked="checked" type="radio" />
No Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_1" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="8" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4\',\'\')', 0)" type="radio" />
Black Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_2" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="9" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4\',\'\')', 0)" type="radio" />
White Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_3" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="10" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4\',\'\')', 0)" type="radio" />
Silver Top
</label>
</div>
</div>
<div class="option-box">
<div class="checkbox">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl04_KitComponent_10_0" name="ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10[=11=]" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10[=11=]\',\'\')', 0)" value="11" type="checkbox" />
Backdoor
</label>
</div>
<div class="checkbox">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl04_KitComponent_10_1" name="ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10\',\'\')', 0)" value="12" type="checkbox" />
Topdoor
</label>
</div>
</div>
您可以通过 type
属性区分输入,如下所示:
$('.option-box input[type="radio"]').change(function() {
$('.option-box input[type="checkbox"]').prop({
'disabled': $(this).val() == "0",
'checked': false
});
});
如果此 .option-box
结构在页面中有多个副本,您可以使用 DOM 遍历来查找与引发事件的对象相关的副本:
$('.option-box input[type="radio"]').change(function() {
$(this).closest('.option-box').next('.option-box').find('input[type="checkbox"]').prop({
'disabled': $(this).val() == "0",
'checked': false
});
});
如果你不能使用任何id或输入的VALUE,你可以这样尝试
$(document).ready(function () {
$( '.option-box' ).on( 'click', 'input[type="radio"]', function() {
var labelContent = $( this ).parents(".radio").find( "label" ).html();
if( labelContent.indexOf( "No Top" ) > -1 ) {
$( ".checkbox input" ).attr( "disabled", "disabled" ).removeAttr( "checked" );
} else {
$( ".checkbox input" ).removeAttr( "disabled" );
}
});
});
我使用 input:
使其通用化,您可以使用 class 使其具体化。
$(document).on("click","input:radio",function(){
if($(this).val() > 0){
$("input:checkbox").attr("disabled",false);
} else {
$("input:checkbox").attr("disabled",true);
$("input:checkbox").attr("checked",false);
}
});
$(document).ready(function(){
if($("input:radio").val() > 0){
$("input:checkbox").attr("disabled",false);
} else {
$("input:checkbox").attr("disabled",true);
$("input:checkbox").attr("checked",false);
}
});
我正在尝试使用 Jquery 完成以下操作:
当 "No Top" 单选按钮为 "checked" 时,它应该禁用并且 "uncheck" 在复选框 selection 中完成的任何 selection。
如果用户 select 另一个单选按钮选项,例如 "Black Top",则应再次启用复选框 selection。
我正在尝试解决这个问题,但无法弄清楚如何使用标签文本找到正确的单选按钮或复选框(我只能继续这样做)。我无法使用 ID,因为它始终以不同的名称呈现。
说明: 第一个 div class "option-box" 包含收音机,然后第二个 div class "option-box" 带有复选框。 该页面有更多控件,包括单选框和复选框,但它只是第二个 "option-class" 我正在尝试操作的复选框。
有什么想法吗?
这是我的控件生成的代码(我无法修改):
<div class="option-box">
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_0" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="0" checked="checked" type="radio" />
No Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_1" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="8" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4\',\'\')', 0)" type="radio" />
Black Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_2" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="9" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4\',\'\')', 0)" type="radio" />
White Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_3" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="10" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4\',\'\')', 0)" type="radio" />
Silver Top
</label>
</div>
</div>
<div class="option-box">
<div class="checkbox">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl04_KitComponent_10_0" name="ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10[=11=]" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10[=11=]\',\'\')', 0)" value="11" type="checkbox" />
Backdoor
</label>
</div>
<div class="checkbox">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl04_KitComponent_10_1" name="ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10\',\'\')', 0)" value="12" type="checkbox" />
Topdoor
</label>
</div>
</div>
您可以通过 type
属性区分输入,如下所示:
$('.option-box input[type="radio"]').change(function() {
$('.option-box input[type="checkbox"]').prop({
'disabled': $(this).val() == "0",
'checked': false
});
});
如果此 .option-box
结构在页面中有多个副本,您可以使用 DOM 遍历来查找与引发事件的对象相关的副本:
$('.option-box input[type="radio"]').change(function() {
$(this).closest('.option-box').next('.option-box').find('input[type="checkbox"]').prop({
'disabled': $(this).val() == "0",
'checked': false
});
});
如果你不能使用任何id或输入的VALUE,你可以这样尝试
$(document).ready(function () {
$( '.option-box' ).on( 'click', 'input[type="radio"]', function() {
var labelContent = $( this ).parents(".radio").find( "label" ).html();
if( labelContent.indexOf( "No Top" ) > -1 ) {
$( ".checkbox input" ).attr( "disabled", "disabled" ).removeAttr( "checked" );
} else {
$( ".checkbox input" ).removeAttr( "disabled" );
}
});
});
我使用 input:
使其通用化,您可以使用 class 使其具体化。
$(document).on("click","input:radio",function(){
if($(this).val() > 0){
$("input:checkbox").attr("disabled",false);
} else {
$("input:checkbox").attr("disabled",true);
$("input:checkbox").attr("checked",false);
}
});
$(document).ready(function(){
if($("input:radio").val() > 0){
$("input:checkbox").attr("disabled",false);
} else {
$("input:checkbox").attr("disabled",true);
$("input:checkbox").attr("checked",false);
}
});