2012-04-19 44 views
0

我正在根據存儲在數組中的值(用於允許用戶將表單恢復爲其初始值的較大腳本的一部分)設置複選框的腳本。代碼基本上是這樣的:jQuery:從數組中設置複選框的值

$("#myForm :checkbox[name='myName[]']").each(function(){ 
    if($.inArray($(this).val(),initValues)!=-1){ 
     $(this).prop("checked",true); 
    } else { 
     $(this).prop("checked",false); 
    } 
}); 

initValues包含最初檢查的框的值屬性。

該腳本檢查$("#myForm :checkbox[name='myName[]']")中的第一個元素,但隨後的元素都顯示爲未選中。 Firebug顯示checked屬性正在更改,但框本身未被選中。

我已經試過的attr() verious排列到位的結果相同prop()一切,和腳本的工作方式在Firefox 11.0和Chrome 18.0在OS X

+1

請提供一些HTML。有可能'.val()'沒有返回你期望的值。 – Blazemonger 2012-04-19 20:13:09

+0

'.prop()'是正確的。你的代碼工作正常[在這裏](http://jsfiddle.net/mblase75/DmVYa/)。你使用的是最近版本的jQuery嗎? – Blazemonger 2012-04-19 20:16:59

+0

我確實考慮過,但據我所知,它是,和'$ .inArray()'測試正常工作。 HTML是一個龐大的項目的一部分,所以在這裏顯示有點複雜,但我會嘗試處理一個測試案例。謝謝 – toppy 2012-04-19 20:20:15

回答

0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var initValues = ['eee', 'mec', 'csc']; 

      $('#btnResetCheckBox').click(function() { 
       $('#myForm').find(':checkbox[name^="myName"]').each(function() { 
        $(this).prop("checked", ($.inArray($(this).val(), initValues) != -1)); 
       }); 

       //Or 

       //    $('#myForm').find(':checkbox[name^="myName"]').prop('checked', false); 
       //    $.each(initValues, function (i, val) { 
       //     $('#myForm').find(':checkbox[name^="myName"][value="' + val + '"]').prop("checked", true); 
       //    }); 
      }); 

      $('#btnResetCheckBox').trigger('click'); 
     }); 
    </script> 
</head> 
<body> 
    <form id="myForm" action=""> 
    <div> 
     <input type="checkbox" name="myName[1]" value="eee" />eee<br /> 
     <input type="checkbox" name="myName[2]" value="ece" />ese<br /> 
     <input type="checkbox" name="myName[3]" value="it" />it<br /> 
     <input type="checkbox" name="myName[4]" value="csc" />csc<br /> 
     <input type="checkbox" name="myName[5]" value="mec" />mec<br /> 
    </div> 
    <input type="button" id="btnResetCheckBox" value="Reset Check Box" /> 
    </form> 
</body> 
</html> 
+1

現場演示請參閱此鏈接:http://jsfiddle.net/nanoquantumtech/dnhwz/ – Thulasiram 2012-04-25 11:57:49

0

HTML屬性可以是messup如果沒有設置爲字符串。

我建議更換:

$(this).prop("checked",true); 

通過

$(this).prop("checked","checked"); 

$(this).prop("checked",false); 

通過

$(this).prop("checked","");