0

以下の関数を使用して、チェックすると追加のオプションが表示されるチェックボックスがあります。問題は、表示されたチェックボックスが選択されている場合、非表示になっても選択されたままになることです。チェックボックスの選択解除を非表示と同じ機能にバインドするにはどうすればよいですか?

これは、多くの類似した非表示/非表示グループの 1 つです。どんな助けでも大歓迎です!みんなありがとう

HTML ID やクラスを追加または変更できないシステム内でこれを行っていることに注意してください。そのため、選択した項目が山積みになっています。

$("input[id='form_0009_fld_5-0']").click(function() {
    if( $(this).is(':checked')) {
        $("input[name='form_0009_fld_6-0'],label[for='form_0009_fld_6-0'],input[name='form_0009_fld_6-1'],label[for='form_0009_fld_6-1'],input[name='form_0009_fld_6-2'],label[for='form_0009_fld_6-2'],input[name='form_0009_fld_6-3'],label[for='form_0009_fld_6-3'],input[name='form_0009_fld_6-4'],label[for='form_0009_fld_6-4'],input[name='form_0009_fld_6-5'],label[for='form_0009_fld_6-5'],input[name='form_0009_fld_6-6'],label[for='form_0009_fld_6-6']").closest('.formField').show();
    } else {
        $("input[name='form_0009_fld_6-0'],label[for='form_0009_fld_6-0'],input[name='form_0009_fld_6-1'],label[for='form_0009_fld_6-1'],input[name='form_0009_fld_6-2'],label[for='form_0009_fld_6-2'],input[name='form_0009_fld_6-3'],label[for='form_0009_fld_6-3'],input[name='form_0009_fld_6-4'],label[for='form_0009_fld_6-4'],input[name='form_0009_fld_6-5'],label[for='form_0009_fld_6-5'],input[name='form_0009_fld_6-6'],label[for='form_0009_fld_6-6']").closest('.formField').hide();
        }
});
4

2 に答える 2

1

属性セレクターは、「で始まる」、「で終わる」、および他の多くのオプションに一致するため、そのような類似のセレクターをたくさん入力する必要はありませんか?

チェックボックスを「未チェック」に設定するにprop('checked', false)は、最初に切り替えられたチェックボックスがチェックされていない場合などに使用し、changeイベントを使用する方がおそらくイベントよりも優れていclickます。

$("input[id^='form_0009_fld_5']").on('change', function() {
    var elems = $('input[name^="form_0009_fld_6"]'),
        state = this.checked;

    elems.closest('.formField').toggle(state);

    if (!state) elems.prop('checked', false);
});
于 2013-04-30T19:28:30.567 に答える
1

Jquery を使用すると、関数をチェーンできるため、 の最後に追加できますhide

例えば:

$('longselector').closest('.formField').hide().attr("checked", false);

そして、あなたのコードの残りの部分。

$("input[id='form_0009_fld_5-0']").click(function() {
    if( $(this).is(':checked')) {
        $("input[name='form_0009_fld_6-0'],label[for='form_0009_fld_6-0'],input[name='form_0009_fld_6-1'],label[for='form_0009_fld_6-1'],input[name='form_0009_fld_6-2'],label[for='form_0009_fld_6-2'],input[name='form_0009_fld_6-3'],label[for='form_0009_fld_6-3'],input[name='form_0009_fld_6-4'],label[for='form_0009_fld_6-4'],input[name='form_0009_fld_6-5'],label[for='form_0009_fld_6-5'],input[name='form_0009_fld_6-6'],label[for='form_0009_fld_6-6']").closest('.formField').show();
    } else {
        $("input[name='form_0009_fld_6-0'],label[for='form_0009_fld_6-0'],input[name='form_0009_fld_6-1'],label[for='form_0009_fld_6-1'],input[name='form_0009_fld_6-2'],label[for='form_0009_fld_6-2'],input[name='form_0009_fld_6-3'],label[for='form_0009_fld_6-3'],input[name='form_0009_fld_6-4'],label[for='form_0009_fld_6-4'],input[name='form_0009_fld_6-5'],label[for='form_0009_fld_6-5'],input[name='form_0009_fld_6-6'],label[for='form_0009_fld_6-6']").closest('.formField').hide().attr("checked", false);
        }
});
于 2013-04-30T19:28:48.873 に答える