2

Jsfiddleはこちら

フィドルで以下の手順に従ってください。

  • [Open Grid] をクリックし、[Yes or No] または [True or False] オプションを選択すると、関連する回答ボタンが下に表示されます。

  • 「回答数」行を見ると、「1 つの回答のみ」を選択できることを示す文字列が表示されます。

  • 回答ボタンをクリックしてオンにし、もう一度クリックしてオフにすると、回答ボタンが緑色に強調表示されなくなります。

  • [質問を追加] ボタンをクリックすると、コントロールがテーブルに上から追加されたことがわかります。1 つの回答を強調表示していないため、選択した回答が少ないことを示すアラートは表示されません。

したがって、問題は、「True or False」または「Yes or No」のいずれかの回答をクリックしてオンにし、同じ回答ボタンをもう一度クリックしてオフにすると、「追加」をクリックしたときに質問」ボタンを押すと、検証は実行されません。

これを行っていると仮定する理由は、「True」、「False」、「Yes」、または「No」の回答ボタンをクリックすると、非表示の回答テキスト入力の数に数字の 1 が 1 つの回答として表示されるためです。 (文字ボタンのように)オンになっていますが、ボタンをオフにすると、回答がオンになっていないため、非表示のテキスト入力に0が表示されます。

1ユーザーが 1 つの回答を選択する必要があるため、回答ボタンがオンになっていない場合でも、文字列が表示された場合、非表示のテキスト入力は常に表示される必要があります。以下のコードが問題の原因であることがわかったと思います。

function updateAnswer(context, iQuestionIndex, bDisableAppend) {
    var _sCurrQ_Class = 'q_' + iQuestionIndex;
    var _oCurrAnswerContainer = jQuery('#answer_selections .' + _sCurrQ_Class);
    if (!_oCurrAnswerContainer.length) {
        _oCurrAnswerContainer = jQuery(document.createElement('div')).addClass(_sCurrQ_Class);
        !bDisableAppend && jQuery('#answer_selections').append(_oCurrAnswerContainer);
    }

    _oCurrAnswerContainer.html('');

    var value, id;
    // loop through all buttons with 'on' status and their info to the current answer container
    $('.answerBtnsOn', context).each(function (i, btn) {

        var $btn = $(btn);
        value = btn.value;
        id = $btn.attr('id');

        var n = $("input[name='value[" + id + "]']").length;
        var hid = "hidden" + id + n + "value";
        $(btn).attr("data-hid", hid);


        if (!bDisableAppend) {
            // append those values to the form
            var input = '<input type="checkbox" id="' + hid + '" name="value[' + iQuestionIndex + '][]" value="' + value + '" checked /><label for="' + hid + '">' + value + '</label>';
            _oCurrAnswerContainer.append(input);
        }
    });
}

私の質問は、jsfiddle で、「True or False」または「Yes」の回答ボタンをオンまたはオフにした後、ユーザーが回答を選択しなかったときにアラートを表示するように、誰でもフィドルを機能させることができるかということです。またはいいえ」?

4

1 に答える 1

1

あなたのコードは本当に面倒ですが、ここで修正したと思います。選択された回答の数が 1 であるはずの場所に 0 であるかどうかを確認する条件付きチェックを追加しました.answerstxt

于 2012-12-07T15:08:04.073 に答える