PHP конкатенация $ i в jQuery - PullRequest
3 голосов
/ 17 марта 2020

Немного странно, у меня есть веб-страница, которая перебирает определенное количество раз, используя while ($i <= 21):. Во время этой итерации у меня есть выпадающий список, в котором отображаются некоторые значения, которые я извлек из базы данных. На данный момент указанное значение c не имеет значения, но идентификатор каждого раскрывающегося списка использует значение $i. Например:

<select name="dropdown<?php echo $i; ?>" id="dropdown<?php echo $i; ?>">
  <option value="1">One</option>
  <option value="2">Two</option>
  <option value="3">Three</option>
</select>

Что я тогда хочу сделать, это взять значение, выбранное из этого раскрывающегося списка, и поместить его в другое поле, которое также имеет идентификатор, соответствующий номеру итерации, например:

<textarea name="textfield<?php echo $i; ?>" id="textfield<?php echo $i; ?>"></textarea>

Я использую следующий код для jQuery, чтобы получить значение из раскрывающегося списка и поместить его в текстовое поле:

<script>
  $("#dropdown<?php echo $i ?>").on("change",function(){
      //Getting Value
      var selValue = $("#dropdown<?php echo $i ?>").val();
      //Setting Value
      $("#textfield<?php echo $i ?>").val(selValue);
  });  
</script>

Однако использование * 1012, похоже, не нравится * часть, как будто я заменяю это, например, на 2 или 3, тогда это работает для этой итерации.

Я попытался установить переменную в PHP как: $textfield= 'textfield'.$i; и использовать это в целом в jQuery вот так: $("#<?php echo $textfield ?>").val(selValue); но это тоже не нравится. Interstining, если я изменю это на $textfield= 'textfield'.'2'; или $textfield= 'textfield2';, это работает. Похоже, что мне не нравится мое использование $i, это PHP объединение, которое ему не нравится?

Кто-нибудь испытал это или знает об исправлении?

1 Ответ

2 голосов
/ 17 марта 2020

Огромные исправления требуются в вашем коде, но объяснят решение в минимальном кодировании.

используйте массив в имени, не используйте id, используйте класс и атрибут данных для хранения значения l oop следующим образом

<select name="dropdown[]" class="dropdown" data-id="<?php echo $i; ?>">
  <option value="1">One</option>
  <option value="2">Two</option>
  <option value="3">Three</option>
</select>

<textarea name="textfield[]" class="textfield<?php echo $i; ?>"></textarea>

теперь в скрипте достаточно одного куска кода для выполнения вашей операции с помощью раскрывающегося списка классов и динамического c текстового поля класса

 <script>
 $(".dropdown").on("change",function(){
     //Getting Value
     var selValue = $(this).val();
     var dynamic_id =  $(this).data('id');
     //Setting Value
     $(".textfield"+dynamic_id).val(selValue);
 });  
 </script>
...