Как получить выбранный элемент из нескольких элементов с одинаковыми именами, разные индексы индекса массива - PullRequest
1 голос
/ 19 октября 2019

У меня проблема в том. У меня есть список выбора с тем же именем, но с другим индексом. Я не знаю, как обнаружить элемент, когда я нажимаю на один из них. Пример:

<select name='contract_sides[0][joint_venture]'>
</select>
<select name='contract_sides[0][company_id]'>
</select>

<select name='contract_sides[1][joint_venture]'>
</select>
<select name='contract_sides[1][company_id]'>
</select>
...........
<select name='contract_sides[n][joint_venture]'>
</select>
<select name='contract_sides[n][company_id]'>
</select>

Когда я меняю значение одного из них. Я покажу / скрою <select name="contract_sides[index]company_id"></select> ниже. Спасибо большое за вашу помощь. Извините за мой английский ! P / s: проблема проще, если мы используем класс, но проблема в том, что мы можем использовать только имя.

Решение от Light:

$('select[name*="joint_venture"]').on('change', function () {    
  let name = $(this).attr('name');
  let index = name.match(/\[([0-9]*)\]/)[1];

  // Hide the company id
  $(`select[name="contract_sides[${index}][company_id]"]`).hide();
});

1 Ответ

1 голос
/ 19 октября 2019
$('select[name*="contract_sides"]').on('click', function () {
    // Your clicked element is now $(this)    
    let $this = $(this);

    // Name of the clicked element
    let name = $this.attr('name');

    // Index of the clicked element
    let index = name.match(/\[([0-9]*)\]/)[1];
});

После вашего комментария к другому ответу я больше понимаю, что вы искали, и я считаю, что это должно вести себя так, как вы хотите

$('select[name*="joint_venture"]').on('change', function () {    
  let name = $(this).attr('name');
  let index = name.match(/\[([0-9]*)\]/)[1];

  // Hide the company id
  $(`select[name="contract_sides[${index}][company_id]"]`).hide();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...