Проблема с установленными по умолчанию флажками: Javascript - PullRequest
0 голосов
/ 15 августа 2011

Я создал следующую функцию для проверки первого значения флажка при загрузке страницы -

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');
 }

Я использовал функцию загрузки html страниц <body onload="defaultCheck()">.

Моя проблема в том, что когда в списке более одного значения, функция по умолчанию выбирает первое, но когда в списке есть только одно значение, оно не выбирается. Значения флажков динамически извлекаются из базы данных с помощью -

 <?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 ]

2 голосов
/ 15 августа 2011

Ставлю деньги, что проблема в использовании [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 голос
/ 15 августа 2011

Как сказал @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 флажок, список ссылается на этот флажок, а НЕ на массив флажков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...