2011-12-06 9 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

div要素が基づいて示されていることを確認ページが読み込まボックスをチェックしてください。

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

簡体表示/非表示のコード:2

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

オプションは、このような短い手のバージョンも同様に動作するはずです:

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

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

、 'this'をオブジェクトIDに変更しなければなりません。そうしないと、ドキュメントは' this'によって何を意味するのか分かりません。 – Mohamad

+0

@モハマド、ページをリフレッシュ、私はそのコピー+貼り付けエラーの前に修正されました:) –

+0

ありがとう。私は、ショートハンドバージョンが動作することを確認することができます。私は体の中にロードされている別のファイルにJSを持っています。私は '$(function(){}) 'にすべてをラップしています; - 私はインラインJSを持っていない場合、これは必要ですか? – Mohamad

関連する問題