0

私のプログラムでは、一度に1つの質問を表示し、次にクリックすると投稿され、2番目の質問が表示されます。しかし、Jqueryの各質問のチェックボックスリストにいくつかのロジックを適用し、次のように呼び出します

 $(document).ready(function () {


        $("input:checkbox").change(function () {
            var txt = $(this).parent().children("label").text();
            if ($(this).is(':checked')) {
                if ($(this).parent().children("label").text() == 'Not Sure') {
                    $("input:checkbox").attr('checked', false);
                    $("input:checkbox").attr('disabled', true);
                    $(this).attr('checked', true);
                    $(this).attr('disabled', false);
                }
            }
            else {
                if ($(this).parent().children("label").text() == 'Not Sure') {
                    $("input:checkbox").attr('checked', true);
                    $("input:checkbox").attr('disabled', false);
                    $(this).attr('checked', false);

                }
            }
        });


        $("input:checkbox").change(function () {
            var txt = $(this).parent().children("label").text();
            if ($(this).is(':checked')) {
                if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                    $("input:checkbox").attr('checked', false);
                    $("input:checkbox").attr('disabled', true);
                    $(this).attr('checked', true);
                    $(this).attr('disabled', false);
                }
            }
            else {
                if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                    $("input:checkbox").attr('checked', false);
                    $("input:checkbox").attr('disabled', false);
                    $(this).attr('checked', false);
                }
            }
        });

    });

したがって、問題は、1 つの質問のロジックが他のチェック ボックス リストの質問とは異なり、上記の document.ready に見られるように適切な関数を呼び出す必要があることです。ready には 2 つの関数があります。では、特定の質問に対して、関数の呼び出しをどのように修正する必要がありますか?

4

2 に答える 2

0

いくつかのカスタム イベントを使用して、質問に応じて適切なイベントを発生させることができます。ここではいくつかのコードを示します。

$(document).ready(function () {
    $("input:checkbox").on("someQuestions", function () {
        var txt = $(this).parent().children("label").text();
        if ($(this).is(':checked')) {
            if ($(this).parent().children("label").text() == 'Not Sure') {
                $("input:checkbox").attr('checked', false);
                $("input:checkbox").attr('disabled', true);
                $(this).attr('checked', true);
                $(this).attr('disabled', false);
            }
        }
        else {
            if ($(this).parent().children("label").text() == 'Not Sure') {
                $("input:checkbox").attr('checked', true);
                $("input:checkbox").attr('disabled', false);
                $(this).attr('checked', false);
            }
        }
    });

    $("input:checkbox").on("anotherQuestions", function () {
        var txt = $(this).parent().children("label").text();
        if ($(this).is(':checked')) {
            if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                $("input:checkbox").attr('checked', false);
                $("input:checkbox").attr('disabled', true);
                $(this).attr('checked', true);
                $(this).attr('disabled', false);
            }
        }
        else {
            if (txt == 'Not Sure' || txt == 'We Are Large Business' || txt == 'None of these apply') {
                $("input:checkbox").attr('checked', false);
                $("input:checkbox").attr('disabled', false);
                $(this).attr('checked', false);
            }
        }
    });

    $("input:checkbox").change(function(){

        // apply some logic to find out if is one question or another
        if ( someQuestion ) {
            $(this).trigger("someQuestions");
        } 
        else {
            $(this).trigger("anotherQuestions");
        }

    });
});

それが役に立てば幸い

于 2012-05-06T16:02:04.770 に答える
0

すべての投稿で、jQuery unbind 関数を使用して、イベント ハンドラーのバインディングを削除します。参考までにこちらをご覧ください。

于 2012-05-05T09:04:46.707 に答える