2013-06-20 29 views
0

首先,我在attr的,因爲,如果我的理解,道具是用來(「選中」)代替使用道具(「選中」)檢索它的複選框是否被檢查,並且attr只會告訴你是否設置了html屬性(如在最初的html代碼中)。的jQuery JavaScript的.prop的複選框(「選中」)將返回undefined爲選中的複選框

現在我在PHP寫出來這樣的兩個複選框:

echo '<h4>Special</h4>'; 
$specials=array('Is Home Page', 'Does not appear in navigation'); 
for($i=0;$i<count($specials);++$i){ 
if($specials[$i]!=''){ 
    echo '<input type="checkbox" name="special[',$i,']"'; 
    if($page['special']&pow(2,$i)) 
     echo ' checked="checked"'; 
    echo ' />',$specials[$i],'<br />'; 
} 
} 

導致要素:

<input type=​"checkbox" name=​"special[0]​"/>​ 
<input type=​"checkbox" name=​"special[1]​"/>​ 

當我檢查我想檢索值發送一個複選框到服務器,但這似乎並沒有工作:

var $home = $("#tabs-advanced-options input[name='special[0]']"); 
//if($home.is(":checked")){ // always returns false 
if($home.prop("checked")){ // always returns undefined 
special["0"] = "Home"; 
} 
var $hidden = $("#tabs-advanced-options input[name='special[1]']"); 
//if($hidden.is(":checked")){ // always returns false 
if($hidden.prop("checked")){ // always returns undefined 
special["1"] = "isHidden"; 
} 

正如在評論t他的代碼,prop(「checked」)總是返回undefined。 我現在複選框被選中... 我也試過用is(「:checked」),但總是返回false。 只有一個DOM元素在每次選擇(我知道.prop()只適用於第一個集合中)

任何想法是值得讚賞!

的選擇是正確的,因爲我已經在控制檯測試,它返回正確的結果(有和沒有backslashes-:

$("#tabs-advanced-options input[name='special\\[1\\]']") 
<input type=​"checkbox" name=​"special[1]​">​ 

$("#tabs-advanced-options input[name='special\\[0\\]']") 
<input type=​"checkbox" name=​"special[0]​">​ 

$("#tabs-advanced-options input[name='special[1]']") 
<input type=​"checkbox" name=​"special[1]​">​ 

$("#tabs-advanced-options input[name='special[0]']") 
<input type=​"checkbox" name=​"special[0]​">​ 

我已經使用jQuery的版本

我使用jQuery的1.9.0:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 

問候

+0

什麼是您使用的jQuery版本? –

+0

'$ home'是否有任何元素? –

+0

@ ruben056 jsfiddle會更好。 – Praveen

回答

4

每!你必須跳過方括號。

var $home = $("#tabs-advanced-options input[name='special\\[0\\]']"); 
//if($home.is(":checked")){ // always returns false 
if($home.prop("checked")){ // always returns undefined 
    special["0"] = "Home"; 
} 
var $hidden = $("#tabs-advanced-options input[name='special\\[1\\]']"); 
//if($hidden.is(":checked")){ // always returns false 
if($hidden.prop("checked")){ // always returns undefined 
    special["1"] = "isHidden"; 
} 
+0

我已經添加了反斜槓但無濟於事。我也檢查了$ home和$ hidden,它們包含正確的輸入元素! – ruben056

+0

$ home.length或$ hidden.length的值是多少?如果它們爲零,那麼這意味着選擇器沒有關聯元素。 –

+0

長度是1,我也擴展了最初的問題,在瀏覽器控制檯中返回正確的元素 – ruben056