2012-06-27 99 views
0

我向用户显示了一个窗体,只有很少的复选框。其中一些将被预选,有些则不会。如何防止使用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?

+0

你_really_使用jQuery 1.2.6,因为你在小提琴选择? – Alnitak

+0

在你的演示中,你想看看这些复选框是否被选中? –

+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一个值,因此这将永远是“真”。


而且声明数组作为一个新的数组:

var selected = new Array(); 

SEE WORKING DEMO

选择 “8” 和 “十一” 和弹出式窗口将出现


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

var selected = []; 

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

+0

ITYM'var selected = [];' – Alnitak

+0

@Alnitak'new Array();'工作正常吗? – Curt

+0

是的,它的确如此,但它暗示了对目前最佳实践的认识不足...... – Alnitak

1

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

+0

这会工作!让我看看如何从数组中删除元素 – Anthony