首页 > 解决方案 > 复选框不存储值

问题描述

我正在尝试创建一个动态问题列表及其动态选项。对于每个选项,我使用复选框维护一个标志。如果单击复选框,则该AnalysisFlag值应该是true,如果不是,则应该是false。但是,使用下面提到的方法,false无论我是否单击复选框,我总是会得到值。

有人可以看看并建议我如何保持AnalysisFlag价值及其同等选择吗?

function GetDynamicTextBox(value) {
        var textBox = $("<input />").attr("type", "textbox").attr("name", "DynamicTextBox").attr("class", "form-control").attr("placeholder","Your Answer");
    textBox.val(value);
    debugger;
    **var allVals = [];
    $('[name="DynamicAnalysisFlag"]:checked').each(function () {
        allVals.push($(this).val());
    });**

    return textBox, allVals;
}

var j = 66;
var x = 2;
var option = 'option' + x;

function AddTextBox() {
  for (var i = j; i <= j; i++) {
    $('#TextBoxContainer' + x).after("<br id='Removebr" + (x + 1) + "'><div class='input-group' id='TextBoxContainer" + (x + 1) + "'><div class= 'input-group-prepend'><div class='input-group-text'> " + String.fromCharCode(i) + " &nbsp; **<input type='checkbox' id='DynamicAnalysisFlag' value= 'true' name='DynamicAnalysisFlag' class='checklistitem''></div>**</div><input autocomplete='off' class='form-control test-option test-option" + x + "  text-box single-line' data-val='true' data-val-required='Answer is required' id=" + option + " name='DynamicTextBox' placeholder='Your Answer' type='text' value=''><span class='field-validation-valid text-danger' data-valmsg-for='AnalysisFlag' data-valmsg-replace='true'></span></div>");
  }
  j++;
  x++;
}

function RemoveTextBox() {
  if (x != 2) {
    $('#TextBoxContainer' + x).remove();
    $('#Removebr' + x).remove();
    --x;
    --j;
  }
}

$('#btnNext').on('click', function() {
  var radioValue1 = $("input[name='AnalysisFlag']:checked").val();
  var txtVal = $('.test-option' + radioValue1).val();
  $('#hiddenRadioValue').val(txtVal);
});

$(function() {
  var values = eval('@Html.Raw(ViewBag.Values)');
  if (values != null) {
    $("#TextBoxContainer").html("");
    $(values).each(function() {
      $("#TextBoxContainer").append(GetDynamicTextBox(this));
    });
  }
});
<div id="radio" class="col-xs-12">
                <br id="Removebr2">
                <div class="input-group" id="TextBoxContainer2">
                    <div class="input-group-prepend">
                        <div class="input-group-text">
                            A &nbsp;
                            <input type="checkbox" id="radio1" value="1" name="AnalysisFlag" onselect="alert('clicke')">
                        </div>
                    </div>
                    <input autocomplete="off" class="form-control test-option test-option1  text-box single-line" data-val="true" data-val-required="Option is required" id="opt1" name="opt1" placeholder="Your Answer" type="text" value="">
                    <span class="field-validation-valid text-danger" data-valmsg-for="opt1" data-valmsg-replace="true"></span>
                    <input data-val="true" data-val-required="The AnalysisFlag field is required." id="hiddenRadioValue" name="AnalysisFlag" type="hidden" value="">
                    <br>
                </div>
            </div>
<div class="card-footer">
                <input type="submit" id="btnNext" value="Next »" class="btn btn-primary vigor-btn">
            </div>
<button type="button" id="btnRemove" class="btn btn-primary vigor-btn" onclick="RemoveTextBox()">Remove Options</button>
<button type="button" id="btnAdd" class="btn btn-primary vigor-btn" onclick="AddTextBox()">Add Options</button>

我已经编辑了GetDynamicTextBox()函数,我在其中获取了在AddTextBox()函数中添加另一个文本框时添加的 DynamicAnalysisFlag 值。但现在的问题是,如果我勾选复选框,我将获得真正的价值,但如果我不勾选复选框,我将一无所获。那么,我应该在这段代码中做些什么改变,所以如果我检查代码,我会得到 true,如果不是,那么我会得到 false。

标签: javascriptjqueryasp.net-mvc

解决方案


推荐阅读