Javascript флажок foreach проблема в codeigniter - PullRequest
0 голосов
/ 01 июня 2011

привет, я пытаюсь установить флажок в моей таблице jquery .. данные таблицы будут заполнены из базы данных .. под таблицей находятся кнопки удаления, редактирования и добавления ... У меня есть скрипт, который проверит, если флажокили отметьте галочкой или нет .. так что, когда кто-то пытается удалить строку, а он не установил какой-либо флажок, предупреждение сообщит ему, что он / она должен выбрать любую строку для удаления в первую очередь.проблема в моем сценарии заключается в том, что если в таблице есть только одна строка ... даже если я поставлю галочку, она все равно выдаст предупреждение, что мне следует выбрать строку для удаления.Теперь вот мой код:

javascript

<script type="text/javascript">
function validateForm()
{
var checkboxes = document.forms["list"]["checkID"];
   for (var i = 0; i < checkboxes.length; i++) {
      if (checkboxes[i].checked) {
         return true;
      }
   }

   alert("Please select a user to edit / delete.");
   return false;
}
</script>

html

<table class="data display datatable" id="example">
    <thead>
        <tr>
          <th>Username</th>
          <th>Name</th>
          <th>Nickname</th>
          <th>Birthday</th>
          <th>Sex</th>
          <th>Address</th>
          <th><input type="checkbox" id="select all"></th>
        </tr>
    </thead>
    <tbody> 
<?php foreach($query->result_array() as $row): ?>
        <tr class="even gradeC">
            <td><?php echo anchor('users/details/'.$row['usrID'],$row['usrName']);?></td>
            <td><?php echo $row['usrpFirstName'].' '.$row['usrpLastName'];?></td>
            <td><?php echo $row['usrpNick'];?></td>
            <td><?php echo $row['usrpBday'];?></td>
            <td><?php echo $row['usrpSex'];?></td>
            <td><?php echo $row['usrpAddress'];?></td>
            <td><input type="checkbox" name="checkID[]" id="checkID" value="<?php echo $row['usrID'];?>" />

              <label for="checkID"></label></td>
        </tr>
<? endforeach; ?>
    </tbody>
</table>
  <input type="submit" name="Delete" id="Delete" value="Delete" class="btn btn-orange" onclick='return validateForm()' />
  <input type="submit" name="Edit" id="Edit" value="Edit" class="btn btn-orange" onclick='return validateForm()' />
  <input type="button" name="AddUser" id="Add User" value="Add User" class="btn btn-orange" onclick="location.href='<? echo base_url().'users/add';?>'"/>
 </form>

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Я опробовал ваш код локально, и через некоторое время я получил решение:

Измените ваш JavaScript следующим образом:

function validateForm()
{
   var checkboxes = document.forms["list"]["checkID"];
   if (checkboxes.length == undefined) 
   {
      if (checkboxes.checked) {
         return true;
      }
    } else {
       for (var i = 0; i < checkboxes.length; i++) {
          if (checkboxes[i].checked) {
             return true;
          }
       }
    }
   alert("Please select a user to edit / delete.");
   return false;
}

Я понял, ваша первая строка в validateForm ()является источником всех ваших проблем.

проблема моего сценария заключается в том, что если таблица содержит только одну строку

Таким образом, браузер сохраняет элементы в двухразличные пути.Если форма содержит два или более элементов с одинаковым именем, он вернет массив.Если форма содержит только один элемент, он вернет HTML-объект.В Орд

0 голосов
/ 01 июня 2011

установите флажок checkboxes.length.

Если установлен флажок 4.В вашем скрипте он установит только 1 флажок и вернет обратно

, проверьте этот код. Он будет работать для вас

<script type="text/javascript">
function validateForm()
{
var check = 0;
var checkboxes = document.forms["list"]["checkID"];
   for (var i = 0; i <= checkboxes.length; i++) {
      if (checkboxes[i].checked == false) {
         check++;
      }
   }
   if(check == 0)
       return true;
   else
  {
     alert("Please select a user to edit / delete.");
     return false;
  }
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...