2011-12-06 46 views
1

我有一個複選框被選中時出現的div,並在未選中時隱藏。如果表單存在錯誤,那麼即使複選框在提交之前被選中,頁面也會重新加載並且div顯示爲隱藏。我可以添加對onLoad事件的調用,但有沒有一種更簡潔的方法來確保在頁面重新加載之後,div是基於複選框的狀態呈現的?如何在頁面重新加載後保持複選框切換div的狀態?

定製CSS:

#maintenance-window { display: none; } 

的jQuery:

$("#check-hasMaintenance").click(function() { 
    $(this).is(":checked") ? $('#maintenance-window').show("fast") : $('#maintenance-window').hide("fast") 
}); 

HTML:

<input type="checkbox" value="1" id="check-hasMaintenance"> 
<div id="maintenance-window"> 
    Stuff 
</div> 
+0

這幾乎是我會做的。 – asawyer

+0

同意,恐怕你被困在JavaScript和onLoad中,如果你不想做某種服務器端驗證並在頁面呈現時向div添加額外的類,那隱藏div 。 –

回答

2

選項1

確保格示出了基於複選框在頁面加載時:

$(document).ready(function() { 
    // Modified for readability - inline if is fine. 
    if($("#check-hasMaintenance").is(":checked")) 
     $('#maintenance-window').show("fast") 
    else 
     $('#maintenance-window').hide("fast"); 
}); 

簡化隱藏/顯示代碼:

$("#check-hasMaintenance").click(function() { 
    $('#maintenance-window').toggle('fast'); 
}); 

選項2

短手版這應該工作,以及:

$(document).ready(function() { 
    $('#maintenance-window').toggle($("#check-hasMaintenance").is(":checked")); 
}); 

$("#check-hasMaintenance").click(function() { 
    $('#maintenance-window').toggle('fast'); 
}); 
+0

在你的第一個例子中,我將不得不將'this'改爲對象ID,否則文檔將不知道'this'是什麼意思,對吧? – Mohamad

+0

@Mohamad,刷新頁面,我修復該複製+粘貼錯誤年齡:) –

+0

謝謝。我可以確認短手版的作品。我有一個單獨的文件加載在身體中的JS。我已經把所有東西都包裝在'$(function(){})中;' - 如果我沒有內聯JS,這是否必要? – Mohamad

相關問題