Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 复选框使用xmlhttprequest搜索后,选中所有不工作_Jquery_Xmlhttprequest - Fatal编程技术网

Jquery 复选框使用xmlhttprequest搜索后,选中所有不工作

Jquery 复选框使用xmlhttprequest搜索后,选中所有不工作,jquery,xmlhttprequest,Jquery,Xmlhttprequest,我的代码有问题。当显示所有员工列表时,复选框选中/取消选中第一次加载时的所有工作。但是,当我为特定的员工组选择下拉列表时,它会显示所选的员工组,但复选框check/uncheck all不再起作用。我正在使用xmlhttprequest搜索一组员工。请帮忙。我一直在搜索我所有的代码,但即使在互联网上搜索,我也找不到正确的答案 下面是我在dropdown onchange上的代码示例: function searchStatus(str) { document.getElementById("li

我的代码有问题。当显示所有员工列表时,复选框选中/取消选中第一次加载时的所有工作。但是,当我为特定的员工组选择下拉列表时,它会显示所选的员工组,但复选框check/uncheck all不再起作用。我正在使用xmlhttprequest搜索一组员工。请帮忙。我一直在搜索我所有的代码,但即使在互联网上搜索,我也找不到正确的答案

下面是我在dropdown onchange上的代码示例:

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