Laravel \ Blade - получить значение выбранного переключателя, динамически добавляемого - PullRequest
0 голосов
/ 04 июня 2018

Я разрабатываю анкету в Laravel.Вопросы и ответы на них печатаются с помощью foreach.Теперь мне нужно получить выбранное радио / ответ на каждый вопрос, чтобы вставить каждую пару в индексированный массив.Проблема в том, что имя радио-тега html является динамическим, а не статичным, так как я могу получить ответ на каждый вопрос?

В коде {{$ answer [0]}} является идентификаторомответ, а {{$ answer [1]}} текст ответа

@foreach ($question->answers as $answer)

   <div class ="radio">
      <label>
         <input type="radio" name={{$question->id_question}} value= {{$answer[0]}}>
         {{$answer[1]}}
      </label>
   </div> 
@endif
@endforeach 

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Пожалуйста, посмотрите на это, если это то, что вы ищете:

 <div id="container">

    <div class ="radio01">
      <label for="question1">question1</label><input type="radio" name="question1"  id="question1" value="answer1">
      <label for="question1">question1</label><input type="radio" name="question1"  id="question1" value="answer2">
      <label for="question1">question1</label><input type="radio" name="question1"  id="question1" value="answer3">
      <label for="question1">question1</label><input type="radio" name="question1"  id="question1" value="answer4">
      <label for="question1">question1</label><input type="radio" name="question1"  id="question1" value="answer5">

   </div> 
    <div class ="radio02">
      <label for="question2">question2</label><input type="radio" name="question2"  id="question2" value="answer1">
      <label for="question2">question2</label><input type="radio" name="question2"  id="question2" value="answer2">
      <label for="question2">question2</label><input type="radio" name="question2" id="question2" value="answer3">
      <label for="question2">question2</label><input type="radio" name="question2"  id="question2" value="answer4">
      <label for="question2">question2</label><input type="radio" name="question2"  id="question2" value="answer5">

   </div> 

....

<script>
    var selectedAnswers = function () {

    var answers = [];

    $('input:radio').each(function () {

        var $this = $(this),

            name = $this.attr('name');
            value = $this.attr('value');

        if ($(this).prop('checked')) {
            answers.push({"name":name, "value":value});
        }

    });

    return answers;

};

$('#container').on('change', ':radio', function() { console.log(selectedAnswers()); }); 

</script>

Кроме того, ваш html не является "оптимальным" отсутствуетдвойные кавычки и правильная иерархия:

   <label>
     <input type="radio" name={{$question->id_question}} value= {{$answer[0]}}>
     {{$answer[1]}}
  </label>

Должно быть (как в моем примере выше):

     <input type="radio" name="{{$question->id_question}}"  id="{{$question->id_question}}" value=" {{$answer[0]}}">
     <label for="{{$question->id_question}}">{{$answer[1]}}</label>
0 голосов
/ 04 июня 2018

Функция приведена ниже для получения значений всех входных радиомодулей.

function get_answers() {
    var answers = {};
    $.each($("input:radio"), function () {
        answers[$(this).attr("name")] = $(this).val();
    });
    return answers;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...