2011-05-14 94 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

相關問題