jQuery根据相应隐藏字段的off值禁用复选框

jQuery根据相应隐藏字段的off值禁用复选框,jquery,loops,checkbox,hidden,Jquery,Loops,Checkbox,Hidden,我有91个复选框和91个相应的隐藏元素。我试图循环遍历隐藏元素和那些值为0的元素,禁用相应的复选框。在提供页面之前,模板变量将替换为0或1 以下是我的一些标记: <input type="hidden" class="h_status" name="enabled_25" value="0"> <br><input type="checkbox" class="c_status" name="perm_25" value="1"> Create RPL

我有91个复选框和91个相应的隐藏元素。我试图循环遍历隐藏元素和那些值为0的元素,禁用相应的复选框。在提供页面之前,模板变量将替换为0或1

以下是我的一些标记:

    <input type="hidden" class="h_status" name="enabled_25" value="0">
<br><input type="checkbox" class="c_status" name="perm_25" value="1"> Create RPL Invoice

<input type="hidden" class="h_status" name="enabled_50" value="0">
<br><input type="checkbox" class="c_status" name="perm_50" value="1"> Uncancel Invoice 

<input type="hidden" class="h_status" name="enabled_49" value="0">
<br><input type="checkbox" class="c_status" name="perm_49" value="1"> Flag As Fraud

<input type="hidden" class="h_status" name="enabled_54" value="1">
<br><input type="checkbox" class="c_status" name="perm_54" value="1"> Change Initials

<input type="hidden" class="h_status" name="enabled_3" value="1">
<br><input type="checkbox" class="c_status" name="perm_3" value="1"> View/Edit CC Info

<input type="hidden" class="h_status" name="enabled_52" value="1">
<br><input type="checkbox" class="c_status" name="perm_52" value="1"> View Invoice History

<input type="hidden" class="h_status" name="enabled_47" value="1">
<br><input type="checkbox" class="c_status" name="perm_47" value="1"> Reprint Pull Copy
也许这会奏效:

$('.h_status').each(function(){
    var d = $(this).val() == 0 ? false : true;
    var name = $(this).attr('name').split('_');
    $('input[name="perm_'+name[1]+'"]').prop('disabled', d);
});

免责声明:未经测试

由于您未同时包含任何输入/复选框,并且我认为您尝试的是一对一关系,因此您必须使用类似.next的内容才能获得相应的复选框

$('.h_status').each(function(){
    var thisInput = $(this).attr('name');
    var thisInputNum = thisInput.split("_")[1];
    var thisVal = $(this).val();
    if(!thisVal){
        $('.c_status[name="perm_' + thisVal + '"]').prop('disabled', true);  
    }
});

对value=使用单引号解析器如何知道name=旁边的是value=的新开始引号还是结束引号被替换为0或1,因此页面上隐藏字段的value=0或value=1。结果如何?第一个复选框总是被禁用的,但没有其他功能?再看一眼,你对隐藏复选框的标记毫无意义。无意冒犯,我知道你在学习。为什么在输入标记的内部?它甚至没有指定给value属性。那应该是什么?财产?值?我更改了标记以尽量减少混淆,我删除了模板变量,这些变量被perl脚本替换为值。我可以遵循您的逻辑,但控制台显示:TypeError:name不是一个值function@VinnyTony很抱歉,我的答案中有一个拼写错误,但现在已修复。名称1应该是名称[1]我将$this.val==0更改为$this.val!=0和它的工作!我会投票支持这个,但我需要一个更好的代表。@vinnythony很高兴它能成功!此外,您可能可以使用this.value而不是$this.val,并且基本for循环比jquery的.each更好。香草javascript总是表现得更好。
$('.h_status').each(function(){
    var thisInput = $(this).attr('name');
    var thisInputNum = thisInput.split("_")[1];
    var thisVal = $(this).val();
    if(!thisVal){
        $('.c_status[name="perm_' + thisVal + '"]').prop('disabled', true);  
    }
});