2

多肢選択式フィールドAのフォームがあります

<select multiple="multiple" name="A"></select>

およびブールチェックボックスB

<input type="checkbox" name="B" />

フィールドBがチェックされている場合、フィールドAを無効にしたい。フィールドBのチェックが外れた場合は、フィールドAを再度有効にします。

私はこれを試しました:

$('input[name="B"]').toggle(function() {
    $('select[name="A"]').addClass('uneditable-input').attr('disabled', 'disabled');
}, function() {
    $('select[name="A"]').removeClass('uneditable-input').removeAttr('disabled');
});

ただし、これは機能しません。代わりに、チェックボックスがWebページから消えます。上記のことをどのように達成できますか?

4

1 に答える 1

3

上記のことをどのように達成できますか?

の代わりにtoggle、を使用clickして(単一の)ハンドラーを接続し、ハンドラー内で、がチェックthis.checkedされているかどうかBを確認します。

$('input[name="B"]').click(function() {
    if (this.checked) {
        $('select[name="A"]').addClass('uneditable-input').attr('disabled', 'disabled');
    }
    else {
        $('select[name="A"]').removeClass('uneditable-input').removeAttr('disabled');
    }
});
于 2013-02-17T12:10:58.047 に答える