HTML / PHP / JQUERY - «предупреждать» имена нескольких <select>при изменении - PullRequest
0 голосов
/ 07 января 2020

Используя PHP, я извлекаю несколько строк данных из базы данных Mysql в таблицу HTML. В конце каждой строки я добавил элемент «select», который показывает свойство, которое пользователь может изменить. Если кто-то выбирает другое свойство (через одно из «select»), чем то, которое хранится в базе данных, я хочу обновить эту строку / поле внутри базы данных.

Ниже, один из «select» element:

<select class="browser-default" id="FKPRIORITYUSER" name="FKPRIORITYUSER486">
  <option value="99">TBD</option>
  <option value="1">Critical</option>
  <option value="2">High</option>
  <option value="3" selected="selected">Low</option>
</select>

Все эти «выбранные» элементы одинаковы, за исключением того, что их «имя» отличается: FKPRIORITYUSER486, FKPRIORITYUSER487 и др. c.

Для обнаружения изменения значение через выбор, я использую простую функцию Jquery. Сейчас я просто пытаюсь «предупредить» имя компонента «select», который вызвал эту функцию:

var $select2 = $('select.browser-default');

$select2.on('change', function (e) {
  alert ( $('select').attr('name') );
  alert( e.target.value );
});

Но проблема в том, что эта функция alert () возвращает только имя » FKPRIORITYUSER486 "... Это нормально, если я нажимаю на соответствующую кнопку" select ", но происходит сбой при изменении значения" select "с именем FKPRIORITYUSER487:)

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 07 января 2020

Во-первых, идентификатор элемента должен быть уникальным. Вам на самом деле не нужен идентификатор здесь, но если вы делаете, сделайте то же самое, что вы сделали с атрибутом Name (используйте то же значение).

Теперь код, чтобы получить имя выбора, который изменяется. Вы вызываете функцию при изменении любого выбора, но предупреждаете имя первого выбора жестким кодом $('select'). Вы должны использовать ссылку $(this) для ссылки на выбранный вариант THE, например:

var $select2 = $('select.browser-default');

$select2.on('change', function (e) {
  alert ( $(this).attr('name') );  
});

. Это исправление к данной проблеме. Лучший способ сделать то, что вы хотите, - назначить data-id для каждого выбора. как это:

<select class="browser-default" data-id="486" name="FKPRIORITYUSER486">

, а затем прочитать идентификатор как это

var changedId = $(this).data('id');

и получить выбранное / измененное значение, как это

var changedValue = $(this).val();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...