jQuery禁用基于复选框的相应隐藏字段的值

时间:2014-05-13 23:32:40

标签: 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 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

我对jQuery的初步尝试不起作用(没有一个复选框被禁用)。我使用每个函数和h_status选择器遍历隐藏的元素。然后,如果任何元素的值为空或0,请使用c_status选择器禁用该复选框。

到目前为止,这是我的代码(请保持温和,我还在学习):

$('.h_status').each(function(){

    var tempval = $(this).val();

    if ( tempval == "" || tempval == 0 ){       
        $('.c_status').prop('disabled', true);      
    }
});

2 个答案:

答案 0 :(得分:0)

也许这会奏效:

$('.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);
});

免责声明:未经测试

答案 1 :(得分:0)

由于你没有包含任何输入/复选框,我认为你想要做的是一对一的关系,你必须使用像.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);  
    }
});