jQuery .изменить значение для нескольких элементов, сопоставленных с динамически генерируемыми именами / идентификаторами

#javascript #jquery #select #dynamic #onchange

#javascript #jquery #выберите #динамический #onchange

Вопрос:

У меня есть динамически генерируемая коллекция из нескольких пар выбора / ввода с сгенерированными идентификаторами.

Урезано:

 <?php foreach ($products as $product) { ?>
  <select id="option_<?php echo $matching_id; ?>">
    <?php foreach ($options as $option) { ?>
       <option title="<?php echo $inputvalue ?>"></option>
    <?php } ?>
  </select>
  <input id="update_<?php echo $matching_id; ?>" type="text" value="" />
<?php } ?>
  

У меня есть этот jQuery для обновления поля ввода атрибутом title (необходимо использовать title, поскольку атрибут value необходим для чего-то другого) выбранной опции:

 $(document).ready(function () {
    $('select').change(function() {
    $('input').val($(this).find("option:selected").attr("title"));
    });
});
  

Конечно, это неправильно. Он обновляет ВСЕ поля ввода одним и тем же значением, независимо от того, какое поле выбора изменено.

Для изменения мне нужно только поле ввода с соответствующим идентификационным номером. Переменная $matching_id всегда является числом, если это имеет значение.

Может ли какой-нибудь полезный человек указать мне правильное направление?

Ответ №1:

 $(document).ready(function () {
    $('select[id^="option_"]').change(function() {
        $('input[id="update_'   $(this).attr('id').replace('option_', '')   '"]').val($(this).find("option:selected").attr("title"));
    });
});
  

Выбирает только select s, когда они id начинаются с "option" , не обязательно $matching_id должно быть числовым.

Ответ №2:

 $(function(){
   $('select').change(function(){
      $('#update_'   $(this).attr('id').replace(/D/g,'')).val($(this).find("option:selected").attr("title"));
   });
});
  

Если какой-либо выбор изменяется, он находит элемент [input] с идентификатором ‘update_’ плюс числовая часть его собственного идентификатора и устанавливает его значение равным названию выбранной опции.