2013-04-29 112 views
6

我已經編寫了一系列複選框,我已經在點擊時編寫了jquery腳本。當用戶點擊複選框時,會打開另一系列的複選框並繼續。現在我的問題是,當用戶檢查這些複選框中的幾個,並移動到下一頁,並由於某種原因他/她回到複選框頁面。那麼我應該把他/她檢查過的所有盒子打開。 當DOM加載複選框的jquery觸發事件

$(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是複選框類。點擊它,我打開另一個複選框。現在,當他們再次訪問該頁面時,我希望自動爲他們的複選框自動完成

回答

3

使用會話cookie的或保存。主要的類複選框的值,並檢查那些因此,當你回來,然後使用下面的代碼:

<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> 
+0

我仍然可以取消這些值。我的問題是,我希望這些子類元素(當複選框被選中時打開)在用戶再次訪問頁面時自動打開。 – 2013-04-29 06:43:45

+0

您是否嘗試過我的代碼? – saifur 2013-04-29 06:44:12

+0

是的!我做到了。 Dint幫助。 – 2013-04-29 06:46:42

0

通常,瀏覽器決定「幫助」並重新填寫用戶已完成的表單。您不應該依賴瀏覽器,因爲該設置可以輕鬆更改,並且可能因用戶而異。

相反,您可能想考慮將點擊的複選框存儲在cookie/localstorage中,或者可能會通過AJAX將每次點擊發送到您的服務器。然後,當用戶登錄頁面時,可以檢查cookie的內容或檢索通過AJAX保存的點擊元素;然後,您可以重新點擊適當的元素。

Ckeck出此相關的帖子處理cookie數據使用jQuery - How do I set/unset cookie with jQuery?

+0

我仍然可以提取值。我的問題是,我希望這些子類元素(當複選框被選中時打開)在用戶再次訪問頁面時自動打開 – 2013-04-29 06:36:06

+0

是的 - 你必須做一些'觸發('點擊')'魔法來模擬用戶點擊這些元素... – Lix 2013-04-29 06:38:22

+0

如何做到這一點? – 2013-04-29 06:43:18

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)); 
    }); 
}); 

DEMONSTRATION

+0

我仍然可以取消值。我的問題是我想要這些子類元素(當複選框被選中時打開)應該在用戶再次訪問頁面時自動打開 – 2013-04-29 06:42:33

+0

並且通過這段代碼,它甚至可以爲所有的永恆!對於會話使用sessionStorage。 – adeneo 2013-04-29 06:44:31