2011-06-01 87 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