嗨我试图将一个复选框合并到我的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>
答案 0 :(得分:1)
我在本地尝试了你的代码,过了一段时间我得到了一个解决方案:
更改您的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对象。在ord
答案 1 :(得分:0)
检查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>