0

チェックボックスがクリックされたときにアクティブになり、クリックされたチェックボックスの値フィールドに基づいて他のチェックボックスを無効または有効にするjquery関数が必要です。

これまでのところ:

$(function () {
    $('input [type="checkbox"]').click(function () {

    });
});

さて、私はいくつかの進歩を遂げました..しかしそれはまだ機能していません。

<script type="text/javascript">
$(function () {
    $(':checkbox').click(function () {

        $value = $(this).attr('value');

        if ($(this).is(':checked'))
        {
            switch ($value)
            {
                case "BLIPA":
                    $(':checkbox[value*="B"]').attr('disabled', true);
            }
        }
        else
        {
            $(':checkbox').each(function()
            {

            }
        }
    });
});

私は何か間違いをしましたか?

編集:

さて、私はそれを解決しました。解決策は次のとおりです。

<script type="text/javascript">
$(function () {
    $("input[type='checkbox']").click(function () {

        var value = $(this).attr('value');

        if ($(this).is(':checked')) {

            var modules = FindModuleRules(value);

            $(':checkbox[value*="' + modules[0] + '"]').attr('disabled', true);
            $(':checkbox[value*="' + modules[1] + '"]').attr('disabled', true);
            $(':checkbox[value*="' + modules[2] + '"]').attr('disabled', true);
            $(':checkbox[value~="' + value + '"]').attr('disabled', false);

        }
        else {
            var modules = FindModuleRules(value);

            $(':checkbox[value*="' + modules[0] + '"]').attr('disabled', false);
            $(':checkbox[value*="' + modules[1] + '"]').attr('disabled', false);
            $(':checkbox[value*="' + modules[2] + '"]').attr('disabled', false);
        }
    });

    function FindModuleRules(string) {

        var modules = new Array();

        var bRegex = /B/;
        var lRegex = /L/;
        var aRegex = /A/;

        if (string.search(bRegex) != -1)
            modules[0] = "B";
        else
            modules[0] = "X";
        if (string.search(lRegex) != -1)
            modules[1] = "L";
        else
            modules[1] = "X";
        if (string.search(aRegex) != -1)
            modules[2] = "A";
        else
            modules[2] = "X";

        return modules;
    }

});

4

4 に答える 4

2

まず、との間にスペースを入れてはいけませんinput。これは、[type="checkbox"]他の入力要素内のチェックボックスを探すためです(これは無効です)。

だから何かのような

$('input[type="checkbox"]').click(function () {
    $('otherselector').prop('disabled', this.checked);
});
于 2012-06-12T19:19:30.070 に答える
1

マークアップの設定を正確に確認しないと、何をする必要があるかを判断するのが難しくなります。ただし、彼女は説明するためのjsfiddleです。

HTML

<input type="checkbox" id="ckall" /> Check 'em all!
<ul>
    <li><input type="checkbox" /> Item 1</li>
    <li><input type="checkbox" /> Item 2</li>
    <li><input type="checkbox" /> Item 3</li>
    <li><input type="checkbox" /> Item 4</li>
    <li><input type="checkbox" /> Item 5</li>
</ul>​

JS

$("input[type='checkbox']").click(function() {
    $("ul :checkbox").attr("checked", $(this).is(":checked"));            
});​

マークアップに応じて、そして正確に何をしようとしているのかによって、jQueryセレクターが決まります。ただし、「すべてチェック」タイプのチェックボックスを作成しようとしていると思います。その場合、フィドルで、[すべてのチェックボックスをチェック]イベントが、コンテナ要素内のすべてのチェックボックスを選択していることがわかります。これを行わないと、[すべてチェック]チェックボックスの状態が変更される可能性もあります。

于 2012-06-12T19:31:14.243 に答える
0

私は質問に答えました。すべての助けをありがとう。

<script type="text/javascript">
$(function () {
    $("input[type='checkbox']").click(function () {

        var value = $(this).attr('value');

        if ($(this).is(':checked')) {

            var modules = FindModuleRules(value);

            $(':checkbox[value*="' + modules[0] + '"]').attr('disabled', true);
            $(':checkbox[value*="' + modules[1] + '"]').attr('disabled', true);
            $(':checkbox[value*="' + modules[2] + '"]').attr('disabled', true);
            $(':checkbox[value~="' + value + '"]').attr('disabled', false);

        }
        else {
            var modules = FindModuleRules(value);

            $(':checkbox[value*="' + modules[0] + '"]').attr('disabled', false);
            $(':checkbox[value*="' + modules[1] + '"]').attr('disabled', false);
            $(':checkbox[value*="' + modules[2] + '"]').attr('disabled', false);
        }
    });

    function FindModuleRules(string) {

        var modules = new Array();

        var bRegex = /B/;
        var lRegex = /L/;
        var aRegex = /A/;

        if (string.search(bRegex) != -1)
            modules[0] = "B";
        else
            modules[0] = "X";
        if (string.search(lRegex) != -1)
            modules[1] = "L";
        else
            modules[1] = "X";
        if (string.search(aRegex) != -1)
            modules[2] = "A";
        else
            modules[2] = "X";

        return modules;
    }

});

FindModuleRule関数を使用して、すべての値の文字列を並べ替え、「A」、「L」、「B」などの特定の値にのみ表示されるキー文字を選択します。見つからない場合は、「X」に割り当てます。どの値の文字列にも見つかりません。次に、その文字を使用して、その文字を含む値を持つすべてのチェックボックスを選択し、それに応じてオンまたはオフを切り替えてから、クリックされたチェックボックスを適切な状態に切り替えます。

于 2012-06-27T17:28:34.887 に答える
0
$('input [type="checkbox"]').click(function () {
    if($(this).is(':checked')) {
        //do stuff
    }
})
于 2012-06-12T19:11:59.963 に答える