繁体   English   中英

隐藏/显示复选框,一旦选中其他复选框并设置了条件值

[英]hide/show checkbox once other checkbox is checked with a condition on its value

我试图在选中其中一个复选框时隐藏一组复选框,并在未选中时重新显示它们。 条件必须基于其值

var input = document.getElementsByTagName("input");

for(i=0;i<input.length;i++){


input[i].onchange = function(){
    if(this.checked){
var value = $(this).val();
$("input[type=checkbox]:not(." + '60' + ")").hide();
$("input[type=checkbox]." + '60').show();
}
  }
     }

要隐藏的复选框组属于值60和90(无法选择两个武器附件),其想法是无法选择两个复选框,只能选择一个,因此这就是为什么我需要在其中隐藏一个复选框的原因被选中,并使其一旦取消选中就重新出现。

        <input type="checkbox" value="50" /> conductive plastic foot cup $50<br/>
        <input type="checkbox" value="60" /> <a>T-arms 2 $60</a><br/>
        <input type="checkbox" value="90" /> <a>T-arms 1 $90</a><br/>
        <input type="checkbox" value="80" /> metal rails $80<br/>
        <input type="checkbox" value="30" /> plastic rails $30<br/>
        <input type="checkbox" value="70" /> foot rest ring $70<br/>
        <input type="checkbox" value="120" />plastic five star foot $120 <br/>

这是我的小提琴: JS小提琴

我建议使用以下jQuery:

$('.arms').change(
    function(){
        $('.arms').not(this).prop('disabled',this.checked);
    });

加上修改后的HTML:

<input id="check1" type="checkbox" value="50" />
<label for="check1">conductive plastic foot cup $50</label>
<input id="check2" type="checkbox" value="60" class="arms" />
<label for="check2">T-arms 2 $60</label>
<input id="check3" type="checkbox" value="90" class="arms" />
<label for="check3">T-arms 1 $90</label>
<input id="check4" type="checkbox" value="80" />
<label for="check4">metal rails $80</label>
<input id="check5" type="checkbox" value="30" />
<label for="check5">plastic rails $30</label>
<input id="check6" type="checkbox" value="70" />
<label for="check6">foot rest ring $70</label>
<input id="check7" type="checkbox" value="120" />
<label for="check7">plastic five star foot $120</label>

JS小提琴演示

上面使用带有for属性(或属性)的label元素将文本与相关的checkbox显式关联。

我已经添加了classinput是相互排斥的,以便容易地与一个选择器,它设定目标文件S disabled 另一元件的特性(或元件如果添加更多互斥checkboxes根据)是否已选中或未选中元素已选中或未选中。

顺便说一句,禁用表单域通常比删除/隐藏表单域更好,这样一来,如果用户无意中单击,他们就不会怀疑另一个选项的去向,也不会惊讶于另一个选项突然出现。

但是,如果您确实要显示/隐藏“其他”元素,则可以使用以下内容:

$('.arms').change(
    function(){
        $('.arms').not(this).add($(this).next())[this.checked ? 'hide' : 'show']();
    });

JS小提琴演示

或者甚至可以将第一种方法(使用prop('disabled',this.checked) )与以下CSS结合使用(在实现:disabled伪选择器的兼容浏览器中):

input:disabled,
input:disabled + label {
    display: none;
}

JS小提琴演示

参考文献:

我喜欢将data属性用于此类工作:

的HTML

<input type="checkbox" value="50" /> conductive plastic foot cup $50<br/>
<input type="checkbox" value="60" data-exclude="input[value=90]" /> T-arms 2 $60<br/>
<input type="checkbox" value="90" data-exclude="input[value=60]" /> T-arms 1 $90<br/>
<input type="checkbox" value="80" /> metal rails $80<br/>
<input type="checkbox" value="30" /> plastic rails $30<br/>
<input type="checkbox" value="70" /> foot rest ring $70<br/>
<input type="checkbox" value="120" />plastic five star foot $120 <br/>

的JavaScript

var input = document.getElementsByTagName("input");

$('input').each(function() {
    var $input = $(this);
    $input.change(function() {
        var $exclude = $($input.data('exclude'));
        $exclude.toggle(! $input.is(':checked'));
    });
});

现场演示

http://jsfiddle.net/bikeshedder/2H5kB/10/

顺便说一句 我宁愿禁用该复选框,也不愿隐藏它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM