2011-08-15 58 views
0

加載頁面時,我已經創建了下面的函數來檢查複選框的第一個值 -問題的默認選中的複選框:使用Javascript

function defaultCheck(){ 
     document.checkBoxForm.list[0].checked = true; 
     var val=document.checkBoxForm.list[0].value; 
     showtotal[0] = document.checkBoxForm.list[0].value; 
     show(val); 
     editVal(); 
     //alert('ajhsdjha'); 
} 

我已經<body onload="defaultCheck()">使用HTML頁面加載的功能。

我的問題是 - 當列表中有多個值時,默認情況下函數選擇第一個,但是當列表中只有一個值時,它不選擇它。複選框的值是從數據庫動態檢索的 -

<?php 
    while($row=mysql_fetch_array($levelq)) {?> 
     <input type='checkbox' name="list" value="<?=$row['tag']?>" 
       id="<?=$row['tag']?>" onclick="" /> 
     <? echo $row['tag'].' '.'<br/><br/>'; 
    } 
?> 

我不知道爲什麼它表現得如此奇怪。任何人都可以幫我嗎?

回答

1

像@cwallenpoole說,你應該在PHP做這個。

如果您仍然想這樣做的JS,在這裏你去:

function defaultCheck(){ 
     if(document.checkBoxForm.list.length > 1) { 
      document.checkBoxForm.list[0].checked = true; 
      var val=document.checkBoxForm.list[0].value; 
      showtotal[0] = document.checkBoxForm.list[0].value; 
     } else { 
      document.checkBoxForm.list.checked=true; 
      var val=document.checkBoxForm.list.value; 
      showtotal[0] = document.checkBoxForm.list.value; 
     } 
     show(val); 
     editVal(); 
     //alert('ajhsdjha'); 
} 

這是因爲,當只有1複選框,列表是指複選框,而不是複選框的陣列

+0

非常感謝..! – Pow

2

我會打賭錢問題是使用[0]。你有沒有考慮刪除它?

但是,這麼說,你不應該在JS反正做這個,你應該在PHP中做到這一點:

$checked = 'checked="true"'; 
while($row=mysql_fetch_array($levelq)) { 
    // you also may wish to consider using list[] instead of list. That will make 
    // reading the value much easier in PHP 
    ?> 
    <input type='checkbox' name="list" value="<?=$row['tag']?>" 
      id="<?=$row['tag']?>" onclick="" <?=$checked?> /> 
    <? echo $row['tag'].' '.'<br/><br/>'; 
    $checked = ""; 
} 
+0

它不會檢查所有的值而不是檢查第一個值嗎? – Pow

+0

@Pow號如果你看循環之前,有'$ checked ='';',然後在循環內輸出''。在這個迭代結束之前,它被設置爲'$ checked =「」;'>這將使所有其他迭代不會打印任何內容,而不是checked =「true」 – cwallenpoole