チェックボックスをオンにすると、関連する UL が展開され、選択に基づいてより多くのオプションが表示されるように、フォームをセットアップしました。機能しますが、ユーザーがチェックボックスのラベルをクリックした場合のみです。チェックボックスをクリックすると、UL は期待どおりに展開されますが、ボックスはチェックされません。
Javascript:
jQuery(document).ready(function()
{
jQuery('.toggleUL').click(function()
{
var checkbox = jQuery(this).find('input');
var ul = jQuery(this).next('ul');
if (ul.css('display') == 'block') { ul.find('input').attr('checked', false); }
if (checkbox.attr('checked') == false)
{
checkbox.attr('checked', true);
}
else
{
checkbox.attr('checked', false);
}
ul.slideToggle('slow'); return false;
});
});
HTML:
<label class="toggleUL"><input style="margin-right: 10px" type="checkbox" name="quoteWebsite" id="quoteWebsite" value="xxx" />xxx</label>
<ul style="list-style-type: none; display: none">
<li style="margin-left: 20px"><label><input style="margin-right: 10px" type="checkbox" name="quoteWebsite1[]" id="quoteWebsite1" value="xxx" />xxx</label></li>
<li style="margin-left: 20px"><label><input style="margin-right: 10px" type="checkbox" name="quoteWebsite1[]" id="quoteWebsite2" value="xxx" />xxx</label></li>
<li style="margin-left: 20px"><label><input style="margin-right: 10px" type="checkbox" name="quoteWebsite1[]" id="quoteWebsite3" value="xxx" />xxx</label></li>
</ul>
slideToggle() 関数が正常に機能していませんでした。ボックス/ラベルをクリックすると、UL が展開してすぐに収縮します。停止させる唯一の方法は、「return false;」を追加することでした。もちろん、これによりチェックボックスがチェックされなくなります。したがって、checkbox.attr() です。
ハッキングされたコード、私は知っています。しかし、どうすればチェックボックスを機能させることができますか? >.<