选中的复选框通过使用加载JavaScript的分页保留

时间:2014-08-27 06:13:10

标签: javascript php ajax

我在使用.load()AJAX / jQuery时遇到问题。当我转到另一页时,我的复选框的状态不会保留。

例如,我检查了第1页中的2个项目,然后当我转到第2页选择另一个项目时,然后当我返回到第1页以测试我的选中项目是否仍然选中时。不幸的是,它可能因为.load()而未经检查。是否可以使用.load()来替换我的复选框?

这是我的代码.load()ajax:

<script type="text/javascript">
$(document).ready(function() {
    $("#results").load("fetch_pages.php", {'page':0}, function() {$("#1-page").addClass('active');});  //initial page number to load
    $('body').on('click', '.paginate_click', function(e){
    var ticked = [];
    $('.tick:checked').each(function(){
      ticked.push($(this).attr("id"));
    });


    var clicked_id = $(this).attr("id").split("-"); //ID of clicked element, split() to get page number.
    var page_num = parseInt(clicked_id[0]); 

    $('.paginate_click').removeClass('active'); 
    $("#results").load("fetch_pages.php", {'page':(page_num-1)}, function(){
       ticked.forEach(function(val, i){
          $(val).prop('checked', true);
       });
    });

    $(this).addClass('active');
    return false;
});     
});
</script>

这是我的复选框代码

echo "<div id='a'><input type='checkbox' class='tick' name='items[$i]' id='$i' value='". $item['ItemID'] ."' >".$item['ItemName']."</div>";

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

代码需要花费时间,所以我已经为您概述了完整的逻辑,您只需要立即添加基本语法,它将适合您。

html部分

 // check while load its in the checked session array or not 
    $checked='';
    if(in_array($item['ItemID'],$_SESSION['checked']))
    {
        $checked = 'checked';
    }
    echo "<div id='a'><input type='checkbox' ".$checked." class='tick' name='items[$i]' id='$i' value='". $item['ItemID'] ."' onchange='check_status(this.value)' >".$item['ItemName']."</div>";

脚本逻辑

<script>
function check_status(check_id)
{
    // make a ajax call here and send the box value(itemid) to php 
}
</script>

ajax php文件

// get the id of checked box and add to session

// check if id already in the session if yes then its a uncheck call so remove it from session array by searching
// into the array using array_search and then unset the index of array 
// reset the array index using array_values 


//else add to the array 
  $_SESSION['checked'][]=/*add the id each time here*/;