#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 для каждого варианта.