2

Jsfiddle 在这里

请按照以下步骤操作:

  • 单击“打开网格”并选择“是或否”或“对或错”选项,您将看到相关的答案按钮出现在下方。

  • 现在,如果您查看“答案数”行,它会显示一个字符串,说明“只能选择 1 个答案”。

  • 单击答案按钮将其打开,然后再次单击将其关闭,这样没有答案按钮会以绿色突出显示。

  • 单击“添加问题”按钮,您会意识到它已将控件从顶部附加到表格中。没有警报显示您选择的答案较少,因为您没有突出显示一个答案。

所以问题是,如果您单击“对或错”或“是或否”答案之一将其打开,然后再次单击相同的答案按钮将其关闭,那么当您单击“添加问题”按钮,它不执行验证。

我假设它这样做的原因是因为当您单击“真”、“假”、“是”或“否”的答案按钮时,隐藏的答案数量文本输入将数字 1 显示为 1 答案是打开(如字母按钮),但是当您关闭按钮时,它会在隐藏的文本输入中显示 0,因为没有打开答案。

应该发生的是,因为它只有一个答案,如果该字符串出现,那么隐藏的文本输入应该始终显示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 中,任何人都可以让小提琴工作,以便当用户在打开和关闭“真或假”或“是”的答案按钮后未选择答案时显示警报或没有”?

4

1 回答 1

1

我想我已经在这里修好了,虽然你的代码真的很乱。我添加了一个条件检查,以查看所选答案的数量是否为零,而它应该是一 - 如果是这样,只需将设置为值的数字设置为.answerstxt一。

于 2012-12-07T15:08:04.073 回答