Объединение нескольких опций поля выбора в один выбор

Я использую модифицированную версию плагина jquery jquery.chained.js, чтобы отфильтровать параметры поля выбора и флажки на основе другого значения поля выбора. Однако теперь мне нужно отфильтровать поле выбора на основе того, какие параметры 2 из предыдущих полей выбора.

У меня есть 3 поля выбора.

  1. Сотрудники
  2. Номера
  3. Услуги

и несколько флажков ИЛИ выберите поля для

  • Аддоны

Вышеупомянутые надстройки зависят от предпочтения отображать их в виде флажков или раскрывающихся списков.

Как и сейчас, если вы измените Staff, то параметры Services и Addons изменятся на те службы, к которым у сотрудников есть доступ. Однако теперь мне нужно сделать так, чтобы Services и Addons устанавливались в зависимости от того, какой Staff имеет доступ к этим Services и какие Rooms предлагают эти услуги.

Кто-нибудь может помочь мне изменить этот уже измененный скрипт, чтобы добавить поддержку нескольких полей выбора? Я хочу попытаться сделать его универсальным, поскольку мы можем использовать этот скрипт, привязанный к скрипту, и для других элементов.

Подводя итог, я ищу, чтобы добавить поддержку поля выбора комнат, чтобы дополнительно отфильтровать параметры Services и AddonServices.

Пример кода можно найти на http://bit.ly/uzEDL2.

РЕДАКТИРОВАТЬ: checkboxradio() предназначен для jquery Mobile, поэтому не беспокойтесь об этом.


person Bot    schedule 02.12.2011    source источник


Ответы (1)


Чтобы выбор ребенка зависел от значений двух родителей, используйте имя класса, например first\second. Обратите внимание, что если у вас действительно сложная структура выбора, поддержка таких классов станет громоздкой. По этой причине может быть проще использовать удаленную версию плагина.

Пример взят из документации плагина. В этом примере дизельный двигатель доступен только для седанов BMW 3 и 5 серий. Это достигается использованием имен классов series-3\sedan и series-5\sedan.

<select id="series">
  <option value="">--</option>
  <option value="series-3" class="bmw">3 series</option>
  <option value="series-5" class="bmw">5 series</option>
  <option value="series-6" class="bmw">6 series</option>
  <option value="a3" class="audi">A3</option>
  <option value="a4" class="audi">A4</option>
  <option value="a5" class="audi">A5</option>
</select>

<select id="model">
  <option value="">--</option>   
  <option value="coupe" class="series-3 series-6 a5">Coupe</option>
  <option value="cabrio" class="series-3 series-6 a3 a5">Cabrio</option>
  <option value="sedan" class="series-3 series-5 a3 a4">Sedan</option>
  <option value="sportback" class="a3 a5">Sportback</option>
</select>

<select id="engine">
  <option value="">--</option>   
  <option value="25-petrol" class="series-3 a3 a4">2.5 petrol</option>
  <option value="30-petrol" class="series-3 series-5 series-6 a3 a4 a5">3.0 petrol</option>
  <option value="30-diesel" class="series-3\sedan series-5\sedan a5">3.0 diesel</option>
</select>

$("#model").chained("#series");
$("#engine").chained("#series, #model");

Обратите внимание, что ваш HTML-код недействителен. Одно число не является допустимым именем класса. Имя класса должно начинаться с буквы подчеркивания [a–z], подчеркивания [_]или дефиса [-], за которыми следуют цифры, буквы, знаки подчеркивания и дефисы. Лучшее объяснение можно найти в: Разрешенные символы для идентификаторов CSS.

person Mika Tuupola    schedule 02.12.2011
comment
Идти по этому маршруту было бы хлопотно, так как мне пришлось бы добавить класс внутри услуг и флажки для каждого сотрудника, которому разрешено иметь эту услугу, а также для каждой комнаты. Классы в примере — это просто примеры, которые не используются вживую. ex класс для услуг будет 1\11 1\12 2\11 3\11 3\12 ex. чем больше комнат и больше персонала, тем больше у меня будет боли. - person Bot; 03.12.2011
comment
Если у вас сложная структура выбора, проще использовать jquery.chained.remote.js. Затем вы строите свою логику, используя SQL-запросы и/или язык сценариев на стороне сервера по выбору. - person Mika Tuupola; 03.12.2011
comment
Спасибо. Похоже, у меня есть 2 варианта на выбор. - person Bot; 05.12.2011