Sahin
@Sahin
Музыкант, Веб разработчик

Кнопка создать select?

Здравствуйте, есть форма
<select id="order_selects" name="" class="form-control">
<option selected disabled><?php echo $_LNG['TYPE_ORDER']; ?></option>
<option value="select_all"> <?php echo $_LNG['ALL_TYPES']; ?> </option>
<option value="select_domain"> <?php echo $_LNG['DOMAIN']; ?> </option>
<option value="select_server"> <?php echo $_LNG['SERVER']; ?> </option>
<option value="select_ssl"> <?php echo $_LNG['SSL']; ?> </option>
<option value="select_desing"> <?php echo $_LNG['DESING']; ?> </option>
<option value="select_script"> <?php echo $_LNG['SCRIPT']; ?> </option>
<option value="select_layout"> <?php echo $_LNG['LAYOUT']; ?> </option>
<option value="select_adv"> <?php echo $_LNG['ADV']; ?> </option>
<option value="select_seo"> <?php echo $_LNG['SEO']; ?> </option>
</select>

нужно чтобы после выбора появилась кнопка "Добавить тип заказа" и кликнув на нее появился еще select и при выборе опции возможность отправить выбранное GET или POST параметром.
На пример: создаем заказ для определенного клиента, у одного может быть только домен, а у другого несколько сервисов. Заранее спасибо за любую указанную помощ.
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Вывести данные для опций один раз, и положить их в константу:
spoiler
$options = [
    [null, $_LNG['TYPE_ORDER']],
    ['select_all', $_LNG['ALL_TYPES']],
    ['select_domain', $_LNG['DOMAIN']],
    ['select_server', $_LNG['SERVER']],
    ['select_ssl', $_LNG['SSL']],
    ['select_desing', $_LNG['DESING']],
    ['select_script', $_LNG['SCRIPT']],
    ['select_layout', $_LNG['LAYOUT']],
    ['select_adv', $_LNG['ADV']],
    ['select_seo', $_LNG['SEO']],
];

printf('const options = %s;', json_encode($options));


Вот такая JS функция динамически создаёт из этих options полноценный элемент select со всеми опциями:
createSelect = () => {
  const select = document.createElement('select');
  options.forEach(([value, title]) => {
      const option = document.createElement('option');
      option.innerText = title;
      if (value) {
        option.value = value;
      } else {
        option.setAttribute('disabled', true);
        option.setAttribute('selected', true);
      }
      select.appendChild(option);
    });
  return select;
};

Создали селект – одновременно создаём кнопку, но пока её прячем. Референс на созданный селект и кнопку держим. По событию выбора в свежесозданном селекте – показать изначально скрытую кнопку "Добавить".

Нажатие на кнопку создаёт ещё один селект-с-кнопкой.

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы