5

我有一系列复选框,为此我在点击时编写了 jquery 脚本。当用户单击复选框时,它会打开另一系列复选框并继续。现在我的问题是当用户检查其中几个复选框并移动到下一页并且由于某种原因他/她回到复选框页面时。然后我应该打开他/她检查过的所有盒子。我在dom加载时写了一个复选框测试

$(document).ready(function(){
   if($('.main').is(':checked')){
      $(this).trigger('click'); 
   }else{
      //do  nothing
   }

  $('.main').click(function(){
      if($('.main').is(':checked')){
       var val = $(this).attr('alt');
       $('#'+val).show();
   }else{
       var val = $(this).attr('alt');
       $('#'+val).hide();
   }
  });
});

正如你在上面看到的。Main 是复选框类。点击它,我打开另一个系列的复选框。现在我希望在他们再次访问该页面时自动为他们的复选框完成此操作

4

3 回答 3

2

使用 session 或 cookie 保存 .main 类复选框值,并在您返回时相应地检查这些值,然后使用以下代码:

<script type="text/javascript">
$(document).ready(function(){

   $('.main').each(function(){
      if($(this).is(':checked')){
        var val = $(this).attr('alt');
        $('#'+val).show();
      }else{
        var val = $(this).attr('alt');
        $('#'+val).hide();
       }
     });


   if($('.main').is(':checked')){
      $(this).trigger('click'); 
   }else{
      //do  nothing
   }

  $('.main').click(function(){
      if($('.main').is(':checked')){
       var val = $(this).attr('alt');
       $('#'+val).show();
   }else{
       var val = $(this).attr('alt');
       $('#'+val).hide();
   }
  });
});
</script>
于 2013-04-29T06:26:42.367 回答
1

我只是使用一些 JSON 和本地存储来跟踪检查了哪些框等。

$(document).ready(function () {
    if (localStorage.getItem('boxes')) {
        var boxes = JSON.parse(localStorage.getItem('boxes'));
        $.each(boxes, function (idx, val) {
            var box = $('.main').eq(idx);
            box.prop('checked', val);
            $('#' + box.attr('alt')).toggle(val);
        });
    }

    $('.main').on('change', function () {
        var val = $(this).attr('alt'),
            boxes = {};

        $.each($('.main'), function (i, el) {
            boxes[$(el).index('.main')] = el.checked;
        });

        $('#' + val).toggle(this.checked);
        localStorage.setItem('boxes', JSON.stringify(boxes));
    });
});

示范

于 2013-04-29T06:33:52.017 回答
0

通常是浏览器决定“帮助”并重新填写用户已经完成的表单。您不应该依赖浏览器,因为设置很容易更改,并且可能因用户而异。

相反,您可能想考虑将点击的复选框存储在 cookie/localstorage 中,或者可能通过 AJAX 将每次点击发送到您的服务器。然后当用户登陆页面时,您可以检查 cookie 的内容或检索通过 AJAX 保存的点击元素;然后,您可以在适当的元素上重新创建点击。

查看这篇有关使用 jQuery 处理 cookie 数据的相关帖子 - 如何使用 jQuery 设置/取消设置 cookie?

于 2013-04-29T06:08:51.500 回答