Как установить значение для текстового поля на html-странице, для динамически генерируемых полей флажков с использованием форм django? - PullRequest
0 голосов
/ 01 февраля 2019

Я настраиваю приложение для викторины, где поле выбора (множественный выбор) динамически добавляется с использованием набора форм django.Этот выбор - тип флажка, я хочу передать значение в текстовое поле, если я установил флажок. Моя проблема в том, что я не могу написать функцию для установки значения в текстовое поле, потому что флажок является динамическим.

я пыталсячтобы получить общее количество флажков, отображаемых на странице и создаваемых таким образом, также текстовое поле.Я попробовал jquery, который установит val в текстовое поле, если я установил флажок.Написание кода для каждого флажка невозможно, потому что флажок это динамический. Есть ли в JavaScript какой-либо метод, чтобы заставить его работать.

test.html

    <form action="{% url 'polls:checkanswer' question.id %}" method="post">
           {% csrf_token %}

            {% for choice in question.testchoice_set.all %}
                <input type="checkbox" name="choice" id="choices{{ forloop.counter }}" value="{{ choice.id }}" />
                <label for="choice{{ forloop.counter }}">{{ choice.choice_opt }}</label><br />
            {% endfor %}
            <input type="submit" value="Vote" />
            <input type="text" name="nvalue" id="nvalue">
     </form>
     <script>
    var totalCheckboxes = $('input:checkbox').length;
    $("#nvalue").val(totalCheckboxes);
    var i;
    //dynamically creating textboxes based on no of checkbox
    for (i = 1; i <= totalCheckboxes ; i++) {
        m = i;
        var i = document.createElement("input"); 
        i.type = "text";
        document.body.appendChild(i);
        i.value = "";
        //i.hidden = true; 
        i.id = 'choice'+m;
        i = m;
    }
    //set value to text field, if first checkbox is checked.
    $("#choices1").click(function () {
    if ($(this).prop("checked")) {
         $("#choice1").val("Yes");
    }
    else {
         $("#choice1").val("No");
    }
    });

Если я установил какие-либо флажки на странице, мне нужно установить «да» для соответствующего текстового поля.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Я сделал это, вместо передачи «Да», я передал идентификатор в текстовое поле и проверил его с помощью модели базы данных.

<script>
  var checkbox=[];
  var i=1;
  $('.cbstyle').change(function()
  {
     if($(this).is(':checked'))
     {
         checkbox.push($(this).val());
  } 
  else 
  {
     for (var i=checkbox.length-1; i>=0; i--) 
     {
         if (checkbox[i] === $(this).val()) 
             checkbox.splice(i, 1);
     }
  }
  $('#txtchoice4').val(checkbox.join(','));
});
</script>
0 голосов
/ 02 февраля 2019

установите атрибут класса для каждого флажка, скажите class = "c" и выполните

$('.c).each(function(){if($(this).prop("checked")) {$(this).val("Yes");}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...