2010-04-01 39 views
2

的代碼(不顯示爲選中):問題與在IE6的jQuery檢查設置複選框

var lstInstanceIds = getData.lstInstanceIds.split(','); 
    for(var i=0; i<lstInstanceIds.length; i++) { 
     var value = lstInstanceIds[i]; 
     $('input[value=' + value + ']').attr('checked','checked'); 
    } 

所以,我做的是循環列表,並設置爲選中其中的值符合檢查屬性。

這適用於Chrome,Firefox,IE7/8,Safari。 但不在IE6中......

+0

發佈你的'getData.lstInstanceIds'字符串的例子嗎? – 2010-04-01 15:58:00

回答

4

改爲使用attr('checked', true)

+0

+1,如果你傳遞true/false,jQuery在這裏處理瀏覽器的不一致。 – 2010-04-01 15:47:45

+0

試過,但仍然沒有改變。 :\ – 2010-04-01 15:55:57

0

我能夠基於你在這裏提到的內容設置一個基本的例子(所以我希望我不會太遠),它在IETester中用6個實例進行測試。

<input type="checkbox" id="chk1" value="chk1" /> 
<input type="checkbox" id="chk2" value="chk2" /> 
<input type="checkbox" id="chk3" value="chk3" /> 
<input type="checkbox" id="chk4" value="chk4" /> 
<input type="checkbox" id="chk5" value="chk5" /> 

var ids = "chk1,chk3,chk5"; 
var lstInstanceIds = ids.split(','); 
for (var i=0; i<lstInstanceIds.length; i++) { 
    var value = lstInstanceIds[i]; 
    $('input[value=' + value + ']').attr('checked','checked'); 
} 
0

我以前有類似的問題。爲了解決這個問題,我使用了與此類似的代碼:

var lstInstanceIds = getData.lstInstanceIds.split(','); 
for(var i=0; i<lstInstanceIds.length; i++) { 
    var value = lstInstanceIds[i]; 
    var checkbox = $('input[value=' + value + ']').get(0); 
    if(checkbox.checked == false) 
     checkbox.click(); 
} 

這會檢查複選框是否被選中。如果沒有,則點擊它,從而檢查它。應該支持所有瀏覽器!

1

IETester不是準確表示真正的IE6環境。主要是由於使用本地機器中的JavaScript引擎而不是IE6之一。我遇到過很多使用IETester在IE6中工作並且看起來很棒的頁面,但是在Windows XP環境中使用真正的IE6時卻遇到了可怕的問題。我的建議是在WinXP SP3上獲得IE6的免費Virtual PC鏡像。使用jQuery發現真正的錯誤非常有用(儘管調試仍然很痛苦)。