如何防止使用jquery选中复选框

时间:2012-06-27 14:43:48

标签: jquery

我正在向用户显示一个表单,几乎没有复选框。其中一些将被预选,一些将不会。

如下所示:

<input type="checkbox" name="box" value="9"> nine
<input type="checkbox" name="box" value="10"> ten
<input type="checkbox" name="box" value="11"> eleven
<input type="checkbox" name="box" value="12" checked> twelve

请注意,在最后一个复选框中,使用scriplet添加了checked关键字。

现在,即使我实际取消选中twelve,我的javascript代码也不会理解不再选中该复选框。

更新 我之前粘贴了错误的链接。这是更新的jsfiddle链接:http://jsfiddle.net/JLSUK/20/

我正在尝试完成的操作仅在用户选择了复选框twelve时提醒用户。但是,即使未选中该复选框,我也会收到一条警告,表明它已被选中。我认为这是因为我在实际的HTML内容中有checked,但是,自第一次加载页面以来,我无法删除它,我必须向用户显示他们已选中此特定复选框。

这可以用jQuery吗?

2 个答案:

答案 0 :(得分:1)

您正在向阵列添加元素,但您永远不会删除它们。因此,每次用户点击“更新”时,您只需填充阵列即可。在某些时候,您需要清除数组,或从中删除以前的选择(取决于您的确切逻辑)。

答案 1 :(得分:1)

在你的jsfiddle中你有:

$('#update').click(function () {

而您的input是:

<input type="submit" id="something" value="update" /> 

尝试将您的jquery更改为:

$('#something').click(function () {

jQuery中的#*选择器指的是id,而不是value


你也有:

if (jQuery.inArray('8', selected) >= 0 && jQuery.inArray('11', selected) >=0)

您的所有复选框都没有8的值,因此永远不会为“true”。


同时将数组声明为新数组:

var selected = new Array();

SEE WORKING DEMO

选择“八”和“十一”,您的弹出窗口将出现


编辑:看到问题编辑后,您需要添加以下行以清除以前的数组项:

var selected = [];

http://jsfiddle.net/JLSUK/20/