私はjQueryを初めて使用するので、明らかな見落としがある場合はお詫びしますが...ユーザーがチェックボックスをクリックしたときにフォームの一部を非表示にしたいだけです。
そこで、この小さな jQuery スクリプトを書きました。
$("#belonging_entire_world").toggle(function() {
$("#access_for_friends, #access_for_groups").fadeOut();
}, function(){
$("#access_for_friends, #access_for_groups").fadeIn();
});
ID「belonging_entire_world」でタグ付けされたチェックボックスをクリックすると、必要なフォームの部分(#access_for_friendsと#access_for_groupsで表される部分)が非表示になり、もう一度クリックすると、この部分が再び表示されますが、チェックボックス「belonging_entire_world」 「私がチェックしたことは常に視覚的にチェックされていないままです...
スクリプトの実行後にfirebugを開くと、チェックボックスにchecked=checked属性があることがわかります...それでも、ブラウザではチェックされていないように見えます(すべてのブラウザで!)...
トグル関数の最初の関数に次を追加しようとしました:
$("#belonging_entire_world").attr('checked', true);
それでも...チェックされていないかのように残っています...
これは私を夢中にさせています。jQueryコードを削除する別のオプションが表示されません。本当に理解できません...ビューの一部の下に置きます:
<div id="Belonging-Access-Control">
<h2> Who will be able to see & access this? </h2>
<div class="field" id="entire_world">
<%= f.check_box(:entire_world) %>
<%= f.label(:entire_world, "The entire world!") %>
</div>
<div class="field" id="access_for_friends">
<%= f.check_box(:access_for_friends) %>
<%= f.label(:access_for_friends, "My friends") %>
</div>
チェックボックスをオンにした後のページのHTML(firebug出力):
<div id="Belonging-Access-Control">
<h2> Who will be able to see & access this? </h2>
<div id="entire_world" class="field">
<input type="hidden" value="0" name="belonging[entire_world]">
<input id="belonging_entire_world" type="checkbox" value="1" name="belonging[entire_world]" checked="checked">
<label for="belonging_entire_world">The entire world!</label>
</div>
<div id="access_for_friends" class="field" style="display: none;">
<input type="hidden" value="0" name="belonging[access_for_friends]">
<input id="belonging_access_for_friends" type="checkbox" value="1" name="belonging[access_for_friends]">
<label for="belonging_access_for_friends">My friends</label>
</div>