我有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);
}
});
答案 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);
}
});