通过jquery或javascript限制复选框检查

通过jquery或javascript限制复选框检查,javascript,jquery,Javascript,Jquery,我有一个TwitterBoosttrapQ和一个带有选项的风格测试,我想限制这个问题的答案数量(变量) 此代码笔很好地解释了问题: 但是,我想将此限制为一组name属性。因此,不是: <input type="checkbox" class="check" name="check1" id="check1" > <label class="layout" for="check1"></label> <input type="checkbox" clas

我有一个TwitterBoosttrapQ和一个带有选项的风格测试,我想限制这个问题的答案数量(变量)

此代码笔很好地解释了问题:

但是,我想将此限制为一组
name
属性。因此,不是:

<input type="checkbox" class="check" name="check1" id="check1" >
<label class="layout" for="check1"></label>

<input type="checkbox" class="check" name="check2" id="check2" >
<label class="layout" for="check2"></label>

<input type="checkbox" class="check" name="check3" id="check3" >
<label class="layout" for="check3"></label>
我想在Jquery中这样写:

$("input:checkbox[name="ok"]").click(function() {
var bol = $("input:checkbox[name="ok"]:checked").length >= 2;     
$("input:checkbox[name="ok"]").not(":checked").attr("disabled",bol);
});

但是,上面的“^对我来说不起作用(抱歉,这里是JQuery的新手)。。我想知道如何将复选框的选择限制为具有特定名称的元素。

您需要使用其
name
属性限定复选框,以便在运行事件处理程序时只计算给定组中的复选框。请注意,由于
[name=“ok”]
包含双引号,因此需要将选择器作为一个整体放入单引号中。此外,对于名称不相同的组(例如,第一个代码段中的
check1
check2
check3
),您需要使用
name
上的“start with”选择器,例如
name^=“check”

$('input:checkbox[name^=“check”])。单击(函数(){
var bol=$('input:checkbox[name^=“check”]:checked')。长度>=2;
$('input:checkbox[name^=“check”]')。未(“:checked”).attr(“已禁用”,bol);
});

您需要使用复选框的
name
属性限定复选框,以便在运行事件处理程序时只计算给定组中的复选框。请注意,由于
[name=“ok”]
包含双引号,因此需要将选择器作为一个整体放入单引号中。此外,对于名称不相同的组(例如,第一个代码段中的
check1
check2
check3
),您需要使用
name
上的“start with”选择器,例如
name^=“check”

$('input:checkbox[name^=“check”])。单击(函数(){
var bol=$('input:checkbox[name^=“check”]:checked')。长度>=2;
$('input:checkbox[name^=“check”]')。未(“:checked”).attr(“已禁用”,bol);
});



您的底部代码段正在将单击处理程序缩减为名称为“ok”的处理程序,但您的内部
bol
逻辑正在查看所有选中的复选框,而不管其名称如何。看到问题了吗?@Taplar:我完全看到了,但是当我在codepen中的参数列表
之后添加
[name=“ok”]
时,我得到了
未捕获的语法错误:缺失)。因此,我假设语法/我试图获取具有特定属性的复选框的方式不正确。看到我的问题了吗?:)PS:我已经编辑了最后一个剪报,但是它在codepen上给我带来了错误。如果需要以这种方式约束多个组,那么你会发现按名称分别对每个组进行编码是一件痛苦的事情。如果可能的话,您应该允许基于规则的组选择-例如让每个组由包含html元素限定。您有一个语法错误,因为选择器的分隔符是双引号。因此,由于您也试图在字符串中使用双引号,因此您过早地错误地终止了字符串。最简单的修复方法是在
'ok'
周围使用单引号。否则,您可以转义应被视为文本的内部双引号,而不是分隔符您的底部代码段正在将单击处理程序缩减为名称为“ok”的处理程序,但您的内部
bol
逻辑正在查看所有选中的复选框,而不管其名称如何。看到问题了吗?@Taplar:我完全看到了,但是当我在codepen中的参数列表
之后添加
[name=“ok”]
时,我得到了
未捕获的语法错误:缺失)。因此,我假设语法/我试图获取具有特定属性的复选框的方式不正确。看到我的问题了吗?:)PS:我已经编辑了最后一个剪报,但是它在codepen上给我带来了错误。如果需要以这种方式约束多个组,那么你会发现按名称分别对每个组进行编码是一件痛苦的事情。如果可能的话,您应该允许基于规则的组选择-例如让每个组由包含html元素限定。您有一个语法错误,因为选择器的分隔符是双引号。因此,由于您也试图在字符串中使用双引号,因此您过早地错误地终止了字符串。最简单的修复方法是在
'ok'
周围使用单引号。否则,您可以跳过应该被视为文本的内部双引号,而不是分隔符。它工作得很好,但我想问一下,为什么要使用
name=^-
,而不仅仅是
name=
?@JohnJ您在这个代码段中的复选框称为
check1
check2
check3
,所以他们的名字不一样。因此,我使用了
name^=“check”
来测试
name
check
开始,而不是
name=“check”
啊,好的,我明白了。。事实上,我确实为某些组使用了相同的名称(在我的代码片段中,名称=ok)——但是的,我得到了它。我接受了答案。。谢谢:)@JohnJ对于具有相同名称的组(如您的第二个代码片段),您完全可以使用
name=“ok”
。不管怎样,我很高兴能帮上忙。谢谢尼克的帮助。双引号让我措手不及——我可能花了一天的时间来解决它!它工作得很好,但是我想问一下,为什么要使用
name=^-
而不仅仅是
name=
?@JohnJ您在这段代码中的复选框称为
check1
check2
check3
,因此它们的名称不同。因此,我使用了
name^=“check”
来测试
name
check
开始,而不是
name=“check”
啊,好的,我明白了。。事实上,我确实为某些组使用了相同的名称(在我的代码片段中,名称=ok)——但是的,我得到了它。我接受了答案。。谢谢:)@JohnJ,谢谢那些同名的团体(比如yo
$("input:checkbox[name="ok"]").click(function() {
var bol = $("input:checkbox[name="ok"]:checked").length >= 2;     
$("input:checkbox[name="ok"]").not(":checked").attr("disabled",bol);
});