默认选中复选框的问题:Javascript

时间:2011-08-15 06:01:02

标签: php javascript html ajax checkbox

我创建了以下函数来检查加载页面时复选框的第一个值 -

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/>'; 
     }
?>

我不知道为什么它表现得那么奇怪。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分: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 = "";
 }

答案 1 :(得分: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');
 }

这是因为,当只有一个复选框时,list会引用该复选框,而不是复选框数组