【问题标题】:Problem with default checked checkboxes: Javascript默认选中复选框的问题:Javascript
【发布时间】:2011-10-27 02:03:51
【问题描述】:

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

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

我不知道它为什么表现得如此奇怪。谁能帮帮我?

【问题讨论】:

    标签: php javascript html ajax checkbox


    【解决方案1】:

    我敢打赌,问题在于[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 = "";
     }
    

    【讨论】:

    • 它不会检查所有值而不是只检查第一个值吗?
    • @Pow 不。如果你看循环之前,有$checked = '';,然后在循环内输出&lt;?=$checked?&gt;。在此迭代结束之前,它被设置为 $checked = "";> 这将使所有其他迭代不打印任何内容而不是 check="true"
    【解决方案2】:

    就像@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 个复选框时,列表指的是该复选框,而不是复选框数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多