【问题标题】:jQuery check if checkbox is unchecked not workingjQuery检查复选框是否未选中不起作用
【发布时间】:2015-11-19 16:54:11
【问题描述】:

我在检查复选框时遇到了一些问题,它总是返回 true,在 false 语句中不起作用,如果没有选中任何复选框,我想在单击添加按钮之前停止。如何解决?

这是我的代码:

$('.add').click(function() {
	var weekDays = [];
	$('#checkBox :checked').each(function () {
		weekDays.push($(this).attr('name'));
	});
	
    var row = '<tr>'
			+ '<td class="rowDays">' + weekDays + '</td>'
			+ '</tr>';
	
    if (!$("#days").find("checkbox").is(":checked")) {
   		$(row).insertAfter($('#days > tbody > tr:last'));
	} else{
    	alert('unchecked!')
        return false;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table id="checkBox">
    <tbody>
	    <tr>
		    <th>Sun</th>
			<th>Mon</th>
			<th>Tue</th>
			<th>Wed</th>
			<th>Thu</th>
			<th>Fri</th>
			<th>Sat</th>
        </tr>
		<tr>
			<td><input name="Sunday" type="checkbox" value="0"></td>
			<td><input name="Monday" type="checkbox" value="1"></td>
			<td><input name="Tuesday" type="checkbox" value="2"></td>
			<td><input name="Wednesday" type="checkbox" value="3"></td>
			<td><input name="Thursday" type="checkbox" value="4"></td>
			<td><input name="Friday" type="checkbox" value="5"></td>
			<td><input name="Saturday" type="checkbox" value="6"></td>
		</tr>
	</tbody>
</table>
            
<button type="button" class="add">Add Days</button>
<br>
<br>
<table id="days">
    <tbody>
		<tr>
			<th>Days</th>
		</tr>
	</tbody>
</table>

JSFiddle

【问题讨论】:

标签: jquery checkbox


【解决方案1】:

更新

1) 为每个输入设置一个通用类(例如:myCheckbox):

<input class="myCheckbox" name="Sunday" type="checkbox" value="0">

2) 获取所有具有此类且“已检查”的输入

3) 使用 'length' 属性:

if ($("input[class=myCheckbox]:checked").length > 0) {
    $(row).insertAfter($('#days > tbody > tr:last'));
} else{
    alert('unchecked!')
    return false;
}

【讨论】:

  • 我尝试了代码,但是为什么我勾选复选框时无法添加?
  • 因为$("#days").find("checkbox:checked").length 永远不会是&gt; 0(选择器不正确)
【解决方案2】:

您的条件不正确$("#days").find("checkbox") 将找不到任何东西(#days 没有任何复选框,checkbox 不是检索复选框的有效选择器)。

您只需要测试检查#checkBox中选中复选框的长度:

if (! $('#checkBox :checked').length ) {
    return false;
}

这是一个完整的例子:

$('.add').click(function() {

    if (! $('#checkBox :checked').length ) {
        return false;   
    }

    var weekDays = $('#checkBox :checked').map(function() { 
        return this.name;
    }).get();

    var row = '<tr>'
            + '<td class="rowDays">' + weekDays.join(', ') + '</td>'
            + '</tr>';

    $(row).appendTo('#days > tbody');

});

Here's a fiddle

【讨论】:

    【解决方案3】:
    if ($("#days").find("checkbox").is(":checked").length!=0) {
            $(row).insertAfter($('#days > tbody > tr:last'));
    } else{
            alert('unchecked!')
            return false;
    }
    

    使用$("#days").find("checkbox").is(":checked").length计算被检查元素的数量,然后与0进行比较。

    Fiddle

    【讨论】:

    • @Hanky웃Panky,没错。我刚读过它`如果没有选中任何复选框,我想在单击添加按钮之前停止。如何解决?`对不起我的坏。查看更新的答案。
    • 是的,现在已修复,已移除 cmets
    • 我尝试了代码,但是为什么我勾选复选框时无法添加?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2023-03-03
    • 2011-07-30
    • 2018-02-09
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    相关资源
    最近更新 更多