2011-05-14 107 views
8

我有以下的HTML代码:如何使用jQuery检查并禁用多个复选框?

<input type="checkbox" value="1" /> 
<input type="checkbox" value="2" /> 
... 
<input type="checkbox" value="30" /> 

,并且用户已经查了一些箱子的一次访问,并且这些值存储在一个变量中(从服务器获取它的值):

myChoices = ["1", "5", "12"] 

这是很容易检查在myChoices值的所有复选框,这是可以做到的:

$.(':checkbox').val(myChoices) 

但我想无论是支票还是DISABL e这些盒子。我有一个类似的解决方案如下:

$(':checkbox').each(function() 
      {if ($.inArray(this.value, myChoices) != -1) 
       {this.checked=true; this.disabled=true;} 
}) 

它工作正常,但我只是想知道是否有一个简单的解决方案,类似的东西为val(),它是如此的优雅。

谢谢。

+0

一个例子你说它的工作原理;它似乎并没有:http://jsfiddle.net/6mfSX/ – 2011-05-14 15:32:09

+4

如果您从服务器获取数据,并且复选框被禁用,为什么不用服务器禁用它们(使用php) 。可能会更容易,但我不知道你是如何使用它:) – user489872 2011-05-14 15:33:54

+0

以下@ aleksv的建议,不是一个检查和禁用复选框等于' the_value'? – 2011-05-14 15:44:17

回答

3

你可以做这样的:

$(":checkbox").val(myChoices).filter(":checked").attr("disabled",true); 

这里是的jsfiddle http://jsfiddle.net/P4VhK/

+0

wohow!我从来不知道我们可以将数组传递给'.val'。真的很高兴知道。你能指点我一些关于这种用法的文档吗? – 2011-05-14 16:54:18

+0

@Shrikant,说实话,我从来没有这样做过:D。我刚就Lejlek的代码进行了即兴创作,并应用了“disabled”属性。所以这个荣誉归功于Lejlek或者他/她从中学到了什么。 – 2011-05-14 16:59:11

+0

太棒了!我喜欢这个解决方案。我的问题是,val()返回了整个包装的集合,我不知道如何仅禁用复选框。谢谢! – Lejlek 2011-05-14 17:04:10

相关问题