0

asp:checkbox がたくさんあります。それらのほとんどは「制限付き」のクラスを持ち、それらはすべて clientIdMode='static' を持っています。id='other' の別のチェックボックスがあります。このボックスをクリックすると、class='restricted' のボックスが無効になります。問題は、Firefox や Chrome で動作しないことです。ネットで関連する質問をたくさん見つけましたが、本当の答えはありません。

$('#other').click(function() {
    if ($(this).is(":checked")) {
        $(".restricted").prop("disabled", "disabled");
    }
    else {
        $(".restricted").prop("disabled", false);
    }
});

.prop、.attr、("disabled", true)、および ("disabled", "disabled") の組み合わせを使用してみましたが、IE 以外では動作しません。

編集:ここにもいくつかのhtmlがあります:

<fieldset>
    <legend>Accessories</legend>
    <ol>
        <li>
            <asp:CheckBox ID="cb1" runat="server" ClientIDMode="Static" CssClass="restricted" />
            <label for="cb1">VAL 1</label>
        </li>
        <li>
            <asp:CheckBox ID="cbP2" runat="server" ClientIDMode="Static" CssClass="restricted" />
            <label for="cb2">VAL 2</label>
        </li>
        <li>
            <asp:CheckBox ID="cb3" runat="server" ClientIDMode="Static" CssClass="restricted" />
            <label for="cbPickupInside">VAL 3</label>
        </li>
        <li>
            <asp:CheckBox ID="cb4" runat="server" ClientIDMode="Static" CssClass="restricted" />
            <label for="cb4">Value 4</label>
        </li>
    </ol>
</fieldset>

そして、クリックすると他のものを無効にするチェックボックス:

<fieldset>
<ol>
    <li>
        <asp:CheckBox ID="cbG" runat="server" ClientIDMode="Static" />
        <label for="cbG">VAL G</label>
    </li>

4

2 に答える 2

2
$('#other').click(function() {
        if ($(this).is(":checked")) {
            $(".restricted input").prop("disabled", "disabled");
        }
        else {
            $(".restricted input").prop("disabled", false);
        }
    });

クラスセレクターの後に入力セレクターを追加して修正しました。入力の周りのスパンは実際にクラスを持っていたものなので、IE はスパンを見つけて入力に対してコードを実行すると思います。Chrome と Firefox はスパンで停止する必要があります。

于 2013-03-14T15:12:02.083 に答える