Флажок не сохраняет значение

#javascript #jquery #asp.net-mvc

Вопрос:

Я пытаюсь создать динамический список вопросов вместе с его динамическими опциями. С каждой опцией я поддерживаю флажок с помощью флажка. Если флажок установлен, то AnalysisFlag значение должно быть true , а если нет, то оно должно быть false . Однако, используя приведенный ниже метод, я всегда получаю false значение независимо от того, нажал я флажок или нет.

Может ли кто-нибудь, пожалуйста, взглянуть и предложить мне, как я могу сохранить AnalysisFlag значение вместе с эквивалентным вариантом?

 function GetDynamicTextBox(value) {  var textBox = $("lt;input /gt;").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 lt;= j; i  ) {  $('#TextBoxContainer'   x).after("lt;br id='Removebr"   (x   1)   "'gt;lt;div class='input-group' id='TextBoxContainer"   (x   1)   "'gt;lt;div class= 'input-group-prepend'gt;lt;div class='input-group-text'gt; "   String.fromCharCode(i)   " amp;nbsp; **lt;input type='checkbox' id='DynamicAnalysisFlag' value= 'true' name='DynamicAnalysisFlag' class='checklistitem''gt;lt;/divgt;**lt;/divgt;lt;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=''gt;lt;span class='field-validation-valid text-danger' data-valmsg-for='AnalysisFlag' data-valmsg-replace='true'gt;lt;/spangt;lt;/divgt;");  }  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));  });  } }); 
 lt;div id="radio" class="col-xs-12"gt;  lt;br id="Removebr2"gt;  lt;div class="input-group" id="TextBoxContainer2"gt;  lt;div class="input-group-prepend"gt;  lt;div class="input-group-text"gt;  A amp;nbsp;  lt;input type="checkbox" id="radio1" value="1" name="AnalysisFlag" onselect="alert('clicke')"gt;  lt;/divgt;  lt;/divgt;  lt;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=""gt;  lt;span class="field-validation-valid text-danger" data-valmsg-for="opt1" data-valmsg-replace="true"gt;lt;/spangt;  lt;input data-val="true" data-val-required="The AnalysisFlag field is required." id="hiddenRadioValue" name="AnalysisFlag" type="hidden" value=""gt;  lt;brgt;  lt;/divgt;  lt;/divgt; lt;div class="card-footer"gt;  lt;input type="submit" id="btnNext" value="Next »" class="btn btn-primary vigor-btn"gt;  lt;/divgt; lt;button type="button" id="btnRemove" class="btn btn-primary vigor-btn" onclick="RemoveTextBox()"gt;Remove Optionslt;/buttongt; lt;button type="button" id="btnAdd" class="btn btn-primary vigor-btn" onclick="AddTextBox()"gt;Add Optionslt;/buttongt; 

Я отредактировал GetDynamicTextBox() функцию, в которой я получаю значение DynamicAnalysisFlag, которое я добавляю во время добавления другого текстового поля в AddTextBox() функцию. Но теперь проблема в том, что если я поставлю флажок, я получу истинное значение, но если я не поставлю флажок, я ничего не получу. Итак, какие изменения я должен внести в этот код, чтобы, если я проверю код, я получил значение true, а если нет, то я получу значение false.

Комментарии:

1. Поскольку код Razor не имеет отношения к проблеме, не могли бы вы отредактировать вопрос, чтобы включить вывод HTML, чтобы мы могли создать рабочий пример проблемы. Также обратите внимание, что использование eval() -это сильный запах кода. Я не уверен, почему вы это делаете, но это невероятно плохая практика, и ее нужно удалить.

2. @RoryMcCrossan Спасибо за редактирование и изучение этого. Я отредактировал код с выводом HTML. Кроме того, я обязательно посмотрю и попытаюсь удалить eval() и найти его альтернативу.

3. Зачем вам нужно использовать js и скрытые поля для этой цели? Простое asp.net Поток MVC может служить этой цели. Вам просто нужно отрисовывать html-код и улавливать значения в действии. Флажок будет отправлять данные только в том случае, если он установлен. Поэтому в вашем действии, если у вас есть значение bool, называемое AnalysisFlag, оно поймает true значение, если в противном случае будет установлено значение false. Возвращаясь к динамическому вопросу-ответу, вы отображаете один вопрос и его варианты одновременно или несколько вопросов и их варианты одновременно?

4. @rahatur Я передаю один вопрос и его несколько вариантов одновременно. Но мне нужно управлять эквивалентом значения AnalysisFlag для каждого варианта.