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」の回答ボタンをオンまたはオフにした後、ユーザーが回答を選択しなかったときにアラートを表示するように、誰でもフィドルを機能させることができるかということです。またはいいえ」?