Jquery 复选框使用xmlhttprequest搜索后,选中所有不工作
我的代码有问题。当显示所有员工列表时,复选框选中/取消选中第一次加载时的所有工作。但是,当我为特定的员工组选择下拉列表时,它会显示所选的员工组,但复选框check/uncheck all不再起作用。我正在使用xmlhttprequest搜索一组员工。请帮忙。我一直在搜索我所有的代码,但即使在互联网上搜索,我也找不到正确的答案 下面是我在dropdown onchange上的代码示例:Jquery 复选框使用xmlhttprequest搜索后,选中所有不工作,jquery,xmlhttprequest,Jquery,Xmlhttprequest,我的代码有问题。当显示所有员工列表时,复选框选中/取消选中第一次加载时的所有工作。但是,当我为特定的员工组选择下拉列表时,它会显示所选的员工组,但复选框check/uncheck all不再起作用。我正在使用xmlhttprequest搜索一组员工。请帮忙。我一直在搜索我所有的代码,但即使在互联网上搜索,我也找不到正确的答案 下面是我在dropdown onchange上的代码示例: function searchStatus(str) { document.getElementById("li
function searchStatus(str) {
document.getElementById("livesearch").innerHTML="";
$("#dvloader").show();
if (str.length==0) {
document.getElementById("livesearch").innerHTML="";
//document.getElementById("livesearch").style.border="0px";
$("#dvloader").hide();
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
$("#dvloader").hide();
//document.getElementById("livesearch").style.border="1px solid #A5ACB2";
/// can add another function here
}
}
xmlhttp.open("GET","findStatus.php?employee="+str,true);
xmlhttp.send();
}
一个示例代码或程序将非常有用。事先非常感谢
下面是div“livesearch”的外观,让您概括了解真实情况:
<div id="livesearch" class="span12">
<?php
// SQL query
//$strSQL = "SELECT * FROM employees WHERE '$status' = '$status' ORDER BY emp_lname
ASC";
//$employee = ucwords($employee);
$strSQL = "SELECT * ";
$strSQL .= "FROM employees ";
$strSQL .= "ORDER BY emp_lname ASC ";
//In MySQL syntax ucase function is the same with the PHP's
//ucase function
// Execute the query (the recordset $rs contains the result)
$rs = mysql_query($strSQL);
$num = 0;
$rec_count = mysql_num_rows($rs);
?>
<?php
if($rec_count < 1){
?>
<div class="alert alert-info">
<button class="close" data-dismiss="alert" type="button"></button>
<strong>Information: </strong>No results. Search again.
</div>
<?php
} else {
}
?>
<form class="" action="" method="post" enctype="multipart/form-data" name="selection">
<table align="center" class="table table-hover">
<thead>
<tr>
<th><input class="checkall" type="checkbox" value="" onclick="check();"/></th>
<th>Employee Number</th>
<th>First Name</th>
<th>Middle Name</th>
<th>Last Name</th>
<th>Status</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
// Loop the recordset $rs
while($row = mysql_fetch_array($rs)) {
$num++;
?>
<tr>
<td><input class="checkbox1" name="checkbox[]" id="checkbox[]" type="checkbox"
value="<?php echo $row['emp_num'];?>"/></td>
<td><?php echo $row['emp_num'];?></td>
<td><?php echo $row['emp_fname'];?></td>
<td><?php echo $row['emp_mname'];?></td>
<td><?php echo $row['emp_lname'];?></td>
<td><?php echo $row['emp_status'];?></td>
<td><a href="basic.php?emp_num=<?php echo $row["emp_num"];?>">View Records</a></td>
</tr>
<?php
}
//<td><a href='basic.php?emp_num={$row["emp_num"]}'>View Records</a></td>
//<td><a href='basic.php?delete_emp={$row["emp_num"]}'>Delete Employee</a></td>
?>
</tbody>
</table>
</form>
</div>
问题是您正在处理动态元素,并且没有使用事件委派来处理这种情况
因此,请使用的事件委派语法来处理动态元素
$(document).on('click', '.checkall', function () {
$(this).closest('table').find(':checkbox').prop('checked', this.checked);
});
由于您已经在使用jQuery,因此无需使用XMLHttpRequest
来执行ajax请求,也无需担心浏览器的可比性问题。。。使用或在这种情况下使用如下方法
function searchStatus(str) {
var $live = $("#livesearch").empty();
if (str.length == 0) {
return;
}
$("#dvloader").show();
$live.load("findStatus.php?employee=" + str, function () {
$("#dvloader").hide();
})
}
为什么要使用XMLHttpRequest
而不是可以共享选中/取消选中所有功能的代码。。。听起来您没有对动态元素使用事件委派检查全部是否在livesearch
?@ArunPJohny这里是我的检查/全部取消检查:$(document).ready(function(){$('.checkall').on('click',function(){$(this).closest('table').find('checkbox').prop('checked',this.checked);});
@ArunPJohny不,它是用javascript写的..我把它命名为check.js..很抱歉有个非常愚蠢的问题..这里是新手(仍然不起作用..事实上..我在basic.php上搜索..当用户使用下拉菜单进行搜索时,findstatus.php会获取下拉菜单的值,并根据下拉菜单的值显示一组新的员工列表。你能添加更多的示例吗?我真的不擅长这一点,但我知道我在这里找的是在编程方面很有天赋的人@user3746866您可以尝试$(文档).on('click','.checkall',function(){$(this).closest('table').find(':checkbox').prop('checked',this.checked);})
刚刚还尝试了您的代码..仍然不起作用..它只在第一次加载所有员工列表时起作用..但在ajax刷新用户对所选组的选择后不起作用..:(@user3746866在ajax请求后是否有类为checkall的元素