Скрыть элементы select

Статус
В этой теме нельзя размещать новые ответы.

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Собственно, необходимо по выбору одного из параметров в первом select сделать неактивными варианты во втором (третьем и десятом) элементы, id (value/class) который меньше некого значения...

Т.е. значения у нас: 5, 10, 15 - нужно оставить только те, которые больше 10. Значения могу копировать в ID или class, не проблема...

Статично - не получится, ибо число постоянно меняется...Значения в списках статичны.
 
Точно подсказать не могу, но могу посоветовать где покопаться.
Есть такая замечательная либа - как Для просмотра ссылки Войди или Зарегистрируйся. Там есть метод "_.filter", который как раз занимается фильтрацией массивов.
Я ее использовал только в связке с AngularJS, но отдельно она будет работать точно так же.

В AngularJS для подобных целей так же используется фильтр, можешь подсмотреть реализацию у них.
Для просмотра ссылки Войди или Зарегистрируйся

PS
Вообще мне видится это так:
- На нужный select вешается событие change.
- С помощью _.filter фильтруем второй массив и генерим второй\третий\десятый select
 
Последнее редактирование:
Не. не, не... Слишком громоздко для такой задачи...

Уверен, что обычный jQuery без сторонних плагинов всё сделает на ура... По сути, в зависимости от выбранного пункта нужно генерировать второй и третий селекты... При этом вариантов всего 2 - либо полный, либо обрезанный... Обрезку могу делать на php заранее и выводить не 3, а 5 селектов и показывать при 1 значении первого - 2 и 3, а при других значениях первого - 4 и 5...
 
Не. не, не... Слишком громоздко для такой задачи...

Уверен, что обычный jQuery без сторонних плагинов всё сделает на ура... По сути, в зависимости от выбранного пункта нужно генерировать второй и третий селекты... При этом вариантов всего 2 - либо полный, либо обрезанный... Обрезку могу делать на php заранее и выводить не 3, а 5 селектов и показывать при 1 значении первого - 2 и 3, а при других значениях первого - 4 и 5...
Для просмотра ссылки Войди или Зарегистрируйся как-то так.
underscorejs весит 5кб. Не думаю что это слишком уж громоздко.

Для просмотра ссылки Войди или Зарегистрируйся версия с 3 селектами
 
Последнее редактирование:
Эм, Не совсем то... Уже понял, что поставил не правильную задачу...

В общем, описываю детально и на этот раз правильно =)

Первый список: Сегодня, завтра, послезавтра...
Второй список - 0-23 (часы)
Третий список - 0-59 (минуты)

Так вот, если выбрано "Сегодня", то надо оставить в списке для выбора время, которое ещё не наступило. Так, если сейчас 12:36, то выбор будет 12-23, а минуты для 12 - 37-59, для 13 и более - 0-59.

Вот! Вот теперь ТЗ верное =)

Кроме того, надо работать с интервалами... К примеру, с "9 до 12" - если сейчас 8:30 - он доступен, если 9+ - он не доступен....

Как-то так.

P.s. уже сам понял, что одним jQuery обойтись будет тяжело...
 
Для просмотра ссылки Войди или Зарегистрируйся
Проверка на интервал так же добавляется довольно легко.
Код не для продакшена, просто как пример.
 
Эм, что мешает его в продакшен? Вроде ж нормально написан. Ну за исключением стандартного добавления id, class, стилей и т.д.

С интервалами - попробуемс =) Но пока в себя не особо верю =)))
 
Эм, что мешает его в продакшен? Вроде ж нормально написан. Ну за исключением стандартного добавления id, class, стилей и т.д.
С интервалами - попробуемс =) Но пока в себя не особо верю =)))
Ну я бы все if заменил на какой-нибудь validationService, который будет возвращать нужные данные для фильтрации. Что-то вроде:
Код:
var validationService = {
    getValidator: function (option) {
        switch (option)
        {
            case 'today':
                var d = new Date();
                return {'hour': d.getHour(), 'minute': d.getMinute()};
                break;
            case 'tomorrow':
                return {};
            // ...
        }
    }
};

И затем в _.filter использовал бы результат. Да еще много чего можно улучшить :) Писал просто чтоб показать основной вектор куда следует думать.
Про интервалы я не совсем понял, так что по ним ничего сказать не могу.
 
С интервалами то всё как-раз просто... Смотри:
Имеем, к примеру, интервал 3 часа... Т.е. генерируются варианты в список (генерируются PHP, JS получит уже готовый список в нужном виде, но юзер должен видеть именно "С 9 до 12" к примеру) с 0 до 3, с 3 до 6 и т.д. Соответственно, сравниваем с начальным часом и проверяем:
С 3 до 6 - доступен если сейчас меньше 3 часов
С 6 до 9 - доступен, если сейчас меньше 6 часов
И т.д.

Ну а про улучшения и прочее - думаю, сейчас это не актуально - мне надо максимально просто и чтобы после меня это мог любой поправить =) Я дико сомневаюсь, что getValidator начинающие кодеры знают. Впрочем, и я его не знаю =)))

P.s. если сделаешь интервалы - кидай сразу кошелёк WM/ЯД - вечером кину на пиво. А то как-то уже и не удобно - ты за меня почти всю работу сделал.
 
Для просмотра ссылки Войди или Зарегистрируйся вот набросал.

Если я правильно понял задачу, то все должно работать как надо.
Поиграйся со строчкой var hour = 5; , чтобы проверить как оно работает.

PS
Вообще время получать на клиенте не есть гуд. Лучше аяксом время с сервера утянуть.

PPS
Для просмотра ссылки Войди или Зарегистрируйся вот добавил сброс минут при выборе часа.

Вообще код довольно грязный, много дублирования. Но думаю ты сам почистишь, и приведешь в порядок.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху