0

我正在向用户显示一个带有几个复选框的表单。其中一些将被预先选择,而另一些则不会。

如下所示:

<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

请注意,在最后一个复选框中,checked关键字是使用脚本添加的。

现在,即使我在物理上取消选择 check twelve,我的 javascript 代码也不明白该复选框不再被选中。

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

我要完成的工作仅在用户选择了 checkbox 时才提醒用户 twelve。但是,即使未选中该复选框,我也会收到已选中的警报。我认为这是因为我有checked实际的 HTML 内容,但是,自从第一次加载页面以来,我无法删除它,我必须向用户展示他们选择了这个特定的复选框。

这对 jQuery 可行吗?

4

2 回答 2

1

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

于 2012-06-27T14:47:43.370 回答
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因此这永远不会是“真”。


还将数组声明为新数组:

var selected = new Array();

查看工作演示

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


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

var selected = [];

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

于 2012-06-27T14:48:58.597 回答