如何保持隐藏输入一直显示1

时间:2012-12-07 12:48:10

标签: javascript jquery html

Jsfiddle是here

请按照以下步骤操作:

  • 点击“打开网格”并选择“是或否”或“真或假”选项,您将看到相关的答案按钮显示在下方。

  • 现在,如果您查看“答案数”行,则会显示一个字符串,指出可以选择“仅1答案”。

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

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

所以问题是,如果你点击其中一个答案“真或假”或“是或否”将其打开然后再次单击相同的答案按钮将其关闭,然后当你点击“添加问题”按钮,它不执行验证。

我假设这样做的原因是因为当您单击“True”,“False”,“Yes”或“No”的答案按钮时,隐藏的答案文本输入数量将显示为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,任何人都可以让小提琴工作,这样当用户在打开并关闭“真或假”的答案按钮后没有选择答案时,它会显示警告或“是或否”?

1 个答案:

答案 0 :(得分:1)

我认为我已修复它here,尽管你的代码非常混乱。我添加了一个条件检查,看看所选答案的数量是否为零,如果是,那么只需将.answerstxt的值设置为1即可。