【问题标题】:how to check all checkboxes and keep them checked through pagination如何检查所有复选框并通过分页检查它们
【发布时间】:2013-05-09 15:38:34
【问题描述】:

我有下面的脚本,它检查组中的所有复选框,效果很好,另一个脚本通过分页传递复选框值并且一切正常,唯一的问题是,当我单击选中所有框时,它会检查所有第 1 页上的页面,但是当我单击第 2 页时,尽管查询工作正常,但仅选中了所有复选框。如果我单独单击所有复选框,那么它们会很好地通过分页,所以我不知道为什么“检查所有”按钮没有。我希望这样当您单击“全部选中”时,所有的框也会在分页中保持选中状态。

这是我检查所有复选框的脚本

<script type="text/javascript">
           window.addEvent('domready', function() {
     $$('li.head input[type=checkbox]').addEvent('click', function() {
    this.getParent('ul').getElements('input[type=checkbox]').setProperty('checked',  this.checked);
});
 });
  </script>

这是记住复选框的脚本

     var aa_checkbox;

      function init_checkbox(){
      //setup blank cb cookie
 if(!Cookie.read('cb')){
 Cookie.write('cb', JSON.encode({}));
  }

     //setup "associative array" to match what is currently in the cookie
   aa_checkbox = JSON.decode(Cookie.read('cb'));


//set up each checkbox with class="remember_cb"
 $$('input.remember_cb').each(function(el){

  //mark checked if it is in the cookie
  if(aa_checkbox[el.name]){
  el.checked = 'checked'
  }

  //setup onclick event to put checkbox status in the 
  el.addEvent('click', function(){
    if(el.checked){
    aa_checkbox[el.name] = 1;
    }else{
    delete(aa_checkbox[el.name]);
   }   
  }) 
 })

//save aa_checkbox back into cookie upon leaving a page
window.onbeforeunload = function(){Cookie.write('cb', JSON.encode(aa_checkbox));};

 setup_form();

return true;
 }

  function setup_form(){
 //set up form so that it adds the inputs upon submit.
 $$('form.remember_cb_form').each(function(form){
  form.addEvent('submit', function(ev){
   //clean up previously inserted inputs
   var aa_hidden_insert = $$('input.hidden_insert');
   $each(aa_hidden_insert, function(el){ 
     el.parentNode.removeChild(el);
   })

   var el_form = this;

   //insert hidden elements representing the values stored in aa_checkbox
   $each(aa_checkbox, function(i_value, s_name){
     if(i_value){ 
      var el_input = document.createElement('input');
      el_input.type = 'hidden';
      el_input.value = i_value;
      el_input.name = s_name;
      el_input.setAttribute('class', 'hidden_insert');
      el_form.appendChild(el_input);
    }
  });
});
  });
}

 window.addEvent('domready', init_checkbox);

如果有人可以帮助我,我将非常感激,谢谢

【问题讨论】:

    标签: javascript pagination checkbox


    【解决方案1】:

    这与您的代码的工作方式有关。我建议检查/取消检查应该影响支持数据的内存副本。例如,如果您有一个表示复选框的数组,请在数组中设置选中/取消选中,然后渲染数组以选中/取消选中相应的复选框。这样,当您检查所有时,所有数组单元格都设置为检查!换页时,只需读取相应数组单元格的状态即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      相关资源
      最近更新 更多