2011-06-01 89 views
0

嗨我试图将一个复选框合并到我的jQuery表..表数据将从数据库中填充..在表下是按钮删除,编辑和添加按钮..我有一个脚本它会检查是否有复选框或勾号或不勾选。这样,当有人试图删除一行并且他没有选中任何复选框时,警告会告诉他他/她应该先选择任何行来删除。关于我的脚本的问题是,如果表只有一行。即使我勾选复选框,它仍会提醒我应该选择一行来删除。现在,这里是我的代码:javascript复选框在codeigniter的foreach问题

的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> 

回答

1

我尝试了你的代码在本地工作,一段时间后,我得到了一个soloution:

更改您的javascript如下:

我想通了,在validateForm您的第一行()是你的所有麻烦的根源。

关于我的脚本的问题是,如果表只有一个行

这样浏览器中存储的两种不同方式的元素。如果表单包含两个或多个具有相同名称的元素,他将返回一个数组。如果表单只包含一个元素,他将返回一个html对象。在ord

0

支票checkboxes.length值。

如果你选中4复选框。在乌拉圭回合脚本只会检查1个复选框,并返回

检查这个code.It将为ü

<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> 
+0

我已经选择了上面的答案..我试过你的代码,但上面的代码更好。谢谢。 – 2011-06-01 23:48:09