如何检查用户是不是使用 jQuery/Javascript 从一组复选框中选中了至少一个复选框?

Posted

技术标签:

【中文标题】如何检查用户是不是使用 jQuery/Javascript 从一组复选框中选中了至少一个复选框?【英文标题】:How to check whether user has checked at least one checkbox from a group of checkboxes using jQuery/Javascript?如何检查用户是否使用 jQuery/Javascript 从一组复选框中选中了至少一个复选框? 【发布时间】:2015-03-09 07:12:55 【问题描述】:

我有以下 html 代码:

<ul class='select_ul' style="width:100%">
  <li><input name="chk_all_grp_day" id="chk_all_grp_day"  type="checkbox"/><span>All</span></li>
  <li><input name="val[grp_day][]" type="checkbox" value="Mon" /><span>Mon</span></li>
  <li><input name="val[grp_day][]" type="checkbox" value="Tue" /> <span>Tue</span> </li>
  <li><input name="val[grp_day][]" type="checkbox" value="Wed" /> <span>Wed</span></li><br />
  <li><input name="val[grp_day][]" type="checkbox" value="Thu" /> <span>Thu</span> </li>
  <li><input name="val[grp_day][]" type="checkbox" value="Fri" /><span>Fri</span> </li>
  <li><input name="val[grp_day][]" type="checkbox" value="Sat" /> <span>Sat</span></li>
  <li><input name="val[grp_day][]" type="checkbox" value="Sun" /><span>Sun</span></li>
</ul>

现在我必须使用 jQuery/javascript 检查用户是否在上面的复选框中至少选中了一个复选框。

如果他没有从上述复选框中选中任何一个,则显示错误消息。

我应该如何使用 jQuery/JavaScript?

请帮帮我。

谢谢。

【问题讨论】:

看看this other answer,好像做得很完美。 【参考方案1】:

尝试使用:

$('ul input[type=checkbox]:checked').length > 0// then at least one is checked else show error msg.

 $(document).ready(function()
	   $("#click").click(function()
		   check();
	   );
   );

   function check()
if($('ul input[type=checkbox]:checked').length >0)
	   alert($('ul input[type=checkbox]:checked').length);
else
alert("error msg");

   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class='select_ul' style="width:100%">
	   <li><input name="chk_all_grp_day" id="chk_all_grp_day"  type="checkbox"/><span>All</span></li>
	   <li><input name="val[grp_day][]" type="checkbox" value="Mon" /><span>Mon</span></li>
	   <li><input name="val[grp_day][]" type="checkbox" value="Tue" /> <span>Tue</span> </li>
	   <li><input name="val[grp_day][]" type="checkbox" value="Wed" /> <span>Wed</span></li><br />
	   <li><input name="val[grp_day][]" type="checkbox" value="Thu" /> <span>Thu</span> </li>
	   <li><input name="val[grp_day][]" type="checkbox" value="Fri" /><span>Fri</span> </li>
	   <li><input name="val[grp_day][]" type="checkbox" value="Sat" /> <span>Sat</span></li>
	   <li><input name="val[grp_day][]" type="checkbox" value="Sun" /><span>Sun</span></li>
	 </ul>
	 <button id="click">click</button>

【讨论】:

【参考方案2】:

我查看了docs for :checked selector,这也可以使用:

var n = $( "input:checked" ).length;

$("button").click(function() 

  var n = $("input:checked").length;
  
  if (n === 0)
    $("#result").text("You haven't checked any options");
  else
    $("#result").text("");
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul class='select_ul' style="width:100%">
  <li>
    <input name="chk_all_grp_day" id="chk_all_grp_day" type="checkbox" /><span>All</span>
  </li>
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Mon" /><span>Mon</span>
  </li>
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Tue" /> <span>Tue</span> 
  </li>
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Wed" /> <span>Wed</span>
  </li>
  <br />
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Thu" /> <span>Thu</span> 
  </li>
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Fri" /><span>Fri</span> 
  </li>
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Sat" /> <span>Sat</span>
  </li>
  <li>
    <input name="val[grp_day][]" type="checkbox" value="Sun" /><span>Sun</span>
  </li>
</ul>

<button>click</button>

<div id="result"></div>

【讨论】:

【参考方案3】:

jQuery fiddlePure JS fiddle

在 jQuery 中,

您可以看到该组中有多少复选框被选中,如下所示:

$("ul input:checked").length > 0

获取所有选中的复选框(:checked)、$("input:checked")*,并且也是一个ul元素descendants的descendants,$("ul input:checked")

* 我们不需要[type=checkbox],因为只能选中复选框/单选,因此在您的情况下它是多余的,没有单选按钮。

如果你在一个页面上有多个这样的组,你可以考虑给每个ul“容器”一个id,并通过这种方式获取一个组的复选框:

$("#my-ckeckbox-group-id input:checked")

Here's a JSFiddle 也实现了警报。

在小提琴中,我使用了以下代码:

$("#submitton").click(function()
    if ($("ul.select_ul input:checked").length > 0)
        $("body").html("Well Done! You checked at least 1 check box!");
     else 
        alert("You need to check at least one checkbox.");
    
);

这也会实例化错误/警告消息。

在纯 javascript 中,

只需将所有选中的复选框存储在一个数组中,然后检查它的长度:

document.querySelectorAll("ul input:checked").length > 0;

它几乎与 jQuery 解决方案相同。

Here's a pure javascript JSFiddle,也实现了警报系统。

在js中可能有更简单的方法可以做到这一点,但我不知道。

【讨论】:

以上是关于如何检查用户是不是使用 jQuery/Javascript 从一组复选框中选中了至少一个复选框?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JSTL 检查会话中是不是存在已登录用户?

如何检查用户 JID 是不是已在 XMPPFrameWork 中使用

如何检查 Tweeter 用户是不是可以使用 tweepy 获取直接消息?

如何在中间件中使用会话来始终检查用户是不是登录

如何使用geofire查询检查10公里半径内是不是存在firebase用户

如何检查用户的设备是不是支持和授权 iBeacon 使用以及是不是开启了蓝牙?