单击时如何取消选中复选框

Posted

技术标签:

【中文标题】单击时如何取消选中复选框【英文标题】:How do I uncheck checkbox when click 【发布时间】:2019-04-16 07:17:18 【问题描述】:

我有复选框,当检查“取消选中”复选框时, 应取消选中所有复选框,并应选中“取消选中”复选框。

这是我迄今为止尝试过的

<input type="checkbox" name="" id="c1" class="checkbox nonCheck">  
<label for="c1"><span class="icon"></span>Uncheck</label>   

<input type="checkbox" name="" id="c2" class="checkbox">  
<label for="c2"><span class="icon"></span>value 1</label>   

<input type="checkbox" name="" id="c3" class="checkbox">  
<label for="c3"><span class="icon"></span>value 2</label>   



$(function()
    $('.nonCheck').click(function()
        $('input:checked').prop('checked',false).not('.nonCheck'); 
    ); 
)

但我的代码不起作用。如何更改代码以修复它? 请帮忙。

【问题讨论】:

我认为您的“取消选中”字段可能应该是一个按钮而不是一个复选框,因为它是一个瞬时事件,而不是一个切换状态。 应该是$('input:checked').not('.nonCheck').prop('checked',false); 否则你将它应用到所有复选框 check / uncheck checkbox using jquery?的可能重复 【参考方案1】:

检查此代码,我在 jquery 选择器的 prop 属性中添加了一个函数。此代码按照您的逻辑运行。

$(function()
    $('.nonCheck').change(function()
          $("input:checkbox").prop("checked", function( i, val ) 
            return !val;
          );
    ); 
)

【讨论】:

【参考方案2】:

您需要检查每次点击“任何”复选框是否选中“取消选中”。

let anyCheckbox = $(".checkbox");

anyCheckbox.on("click", function() 
	if($(".nonCheck").prop('checked'))
    	   anyCheckbox.not('.nonCheck').prop('checked', false);
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="" id="c1" class="checkbox nonCheck">
<label for="c1"><span class="icon"></span>Uncheck</label>

<input type="checkbox" name="" id="c2" class="checkbox">
<label for="c2"><span class="icon"></span>value 
 1</label>

<input type="checkbox" name="" id="c3" class="checkbox">
<label for="c3"><span class="icon"></span>value 2</label>

因此,每当“取消选中”被“选中”时,请在 false 上保留所有其他复选框

【讨论】:

【参考方案3】:

我添加了一个 if 语句 if ($(this).prop('checked')) 来检查“所有复选框”复选框是否被选中。

将单击更改为更改事件,因为您也可以在不使用鼠标的情况下选中复选框。

移动了not() 选择器,以便在设置属性之前过滤对象。

将最后一个 ; 添加到您的代码中,因为不使用它是邪恶的(尽管对于大多数解析器来说它不会阻止代码)

$(function() 
  $('.nonCheck').on('change', function() 
    if ($(this).prop('checked')) 
      $('input:checked').not('.nonCheck').prop('checked', false);
    
  );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="" id="c1" class="checkbox nonCheck">
<label for="c1"><span class="icon"></span>Uncheck</label>

<input type="checkbox" name="" id="c2" class="checkbox">
<label for="c2"><span class="icon"></span>value 
 1</label>

<input type="checkbox" name="" id="c3" class="checkbox">
<label for="c3"><span class="icon"></span>value 2</label>

【讨论】:

【参考方案4】:

检查此代码,我认为这会对您有所帮助

$(function()
        $('.nonCheck').click(function()
            $('input.checkbox:checked').prop('checked',false); 
        ); 
        $('.checkbox').click(function() 
        	$('input.nonCheck:checked').prop('checked',false); 
        );
    )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="checkbox" name="" id="c1" class="nonCheck">  
                        <label for="c1"><span class="icon"></span>Uncheck</label>   

                        <input type="checkbox" name="" id="c2" class="checkbox">  
                        <label for="c2"><span class="icon"></span>value 
 1</label>   

                        <input type="checkbox" name="" id="c3" class="checkbox">  
                        <label for="c3"><span class="icon"></span>value 2</label>   

【讨论】:

以上是关于单击时如何取消选中复选框的主要内容,如果未能解决你的问题,请参考以下文章

防止复选框在单击时取消选中(不禁用或只读)

如何通过使用alpine js单击一个复选框来选中和取消选中所有复选框

ExtJS中grid单击一行时判断改行的复选框是不是选中,如果选中则单击之后取消选中状态,没有选中则让复选框

为啥在单击“全选”按钮后,复选框会被选中,然后又被取消选中?

取消选中复选框时从收音机中删除“选中”

使用jquery单击时,单击单选按钮取消选中