Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
35 / 35 / 21
Регистрация: 25.07.2015
Сообщений: 167

Как отображать определенные данные в <select> в зависимости от значений в другом <select>?

18.04.2018, 02:49. Показов 1915. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня на страницу есть два <select>. В каждом из них располагаются даты в формате dd.mm.yyyy.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<select id="s1">
        <option value="" selected disabled>Дата1</option>
        <option value="">27.01.2018</option>
        <option value="">17.02.2018</option>
        <option value="">24.03.2018</option>
        <option value="">31.04.2018</option>
        <option value="">06.05.2018</option>
</select>
 
<select id="s2">
        <option value="" selected disabled>Дата2</option>
        <option value="">27.01.2018</option>
        <option value="">17.02.2018</option>
        <option value="">24.03.2018</option>
        <option value="">31.04.2018</option>
        <option value="">06.05.2018</option>
</select>
Как я могу сделать так, чтобы при выборе даты в s1, в s2 отображались только те даты, которые "старше", чем выбранная дата в s1?
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2018, 02:49
Ответы с готовыми решениями:

Отображать поле ввода в зависимости от значения select
Здравствуйте, такая проблема не могу , то есть даже не знаю как реализовать такое. Есть таблица &lt;form action=&quot;&quot;...

Как сделать, чтобы при выборе например в Select страна - Россия, в другом select'e были только города РФ?
На HTML-форме есть 2 SELECT получающие option (список стран и городов) от MS SQL c двух взаимосвязанных таблиц, как сделать так, чтобы...

В зависимости от выбранного значения select отображать input формы
Здравствуйте! Подскажите пожалуйста, как сделать так, чтобы input формы появлялся, только когда в селекте выбрано определённое значение? ...

5
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
18.04.2018, 08:30
Цитата Сообщение от Teshuhack Посмотреть сообщение
Как я могу сделать
Если я правильно вас понял то может так:
Песочница
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<select id="s1">
        <option value="" selected disabled>Дата1</option>
        <option value="">27.01.2018</option>
        <option value="">17.02.2018</option>
        <option value="">24.03.2018</option>
        <option value="">31.04.2018</option>
        <option value="">06.05.2018</option>
</select>
 
<select id="s2">
        <option value="" selected disabled>Дата2</option>
        <option value="">27.01.2018</option>
        <option value="">17.02.2018</option>
        <option value="">24.03.2018</option>
        <option value="">31.04.2018</option>
        <option value="">06.05.2018</option>
</select>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
qwerty();
function qwerty() {    
    var s1 = document.getElementById('s1');
    var s2 = document.getElementById('s2');
    var s1date, datee;
 
    s1.addEventListener('change',function(){
        var selected = this.selectedIndex, arr=[], yy, mm, dd, newDate;
        selected = new Date( s1[selected].text.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1') );
 
        for(i=1; i<s1.length; i++){
            s1date = new Date(s1[i].text.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
            if(selected < s1date){
                arr.push( new Option(s1date, "значение") );
            }
            if(i+1==s1.length){
                s2.innerHTML = '<option value="" selected disabled>Дата2</option>';
                for(j=0; j<arr.length; j++){
                    newDate = new Date(arr[j].text);
                    yy = newDate.getFullYear();
                    mm = newDate.getMonth()+1;
                    dd = newDate.getDate();
 
                    (dd<10) ? dd='0'+dd : dd; (mm<10) ? mm='0'+mm : mm;
                    arr[j].text = dd+'.'+mm+'.'+yy;
                    s2.options[s2.length] = arr[j];
                }
            }
        }
    },false);
}
Потестите- напишите все ли верно или что-то не так. Если что-то не так то объясните.

Добавлено через 20 минут
Цитата Сообщение от Teshuhack Посмотреть сообщение
У меня на страницу есть два <select>
Кстати, у вас ошибка в дате, 31-го апреля в 2018г. нету, да и по-моему вообще нету.
0
35 / 35 / 21
Регистрация: 25.07.2015
Сообщений: 167
18.04.2018, 18:48  [ТС]
Цитата Сообщение от zlojnaxa Посмотреть сообщение
Потестите- напишите все ли верно или что-то не так. Если что-то не так то объясните.
При выборе любой даты из первого списка, во втором отображается дата "01.05.2018". Такой даты нет ни в одном списке.
Цитата Сообщение от zlojnaxa Посмотреть сообщение
Кстати, у вас ошибка в дате, 31-го апреля в 2018г. нету, да и по-моему вообще нету.
Всё верно. Это тестовые данные.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
19.04.2018, 08:57
Цитата Сообщение от Teshuhack Посмотреть сообщение
во втором отображается дата "01.05.2018". Такой даты нет ни в одном списке.
Я же вам написал
Цитата Сообщение от zlojnaxa Посмотреть сообщение
Кстати, у вас ошибка в дате, 31-го апреля в 2018г. нету, да и по-моему вообще нету.
Почитайте прежде чем говорить что скрипт работает неправильно- из скрина понятно почему во втором списке отображается дата "01.05.2018" вместо "31.04.2018"...
Ну а в остальном все верно?
Миниатюры
Как отображать определенные данные в <select> в зависимости от значений в другом <select>?  
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
19.04.2018, 09:09
Корректные даты пишите и не будет он отображать "01.05.2018"
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
19.04.2018, 11:09
Teshuhack, как вариант можно просто скрывать ненужные элементы второго списка. В данном случае "старше" понимается как "позже", но это легко поменять, изменив знак > в 26-ой строке на противоположный.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        <select id="s1">
            <option value="" selected disabled>Дата1</option>
            <option value="">27.01.2018</option>
            <option value="">17.02.2018</option>
            <option value="">24.03.2018</option>
            <option value="">30.04.2018</option>
            <option value="">06.05.2018</option>
        </select>
 
        <select id="s2">
            <option value="" selected disabled>Дата2</option>
            <option value="">27.01.2018</option>
            <option value="">17.02.2018</option>
            <option value="">24.03.2018</option>
            <option value="">30.04.2018</option>
            <option value="">06.05.2018</option>
        </select>
 
        <script>
            document.getElementById("s1").addEventListener("change", function (evt)
            {
                let parse = s => Date.parse(s.split(".").reverse().join("-"));
                for (const option of document.querySelectorAll("#s2>option"))
                {
                        let s1text = evt.target.options[evt.target.selectedIndex].textContent;
                        option.style.display = parse(option.textContent) > parse(s1text) ? "block" : "none";
                }
            });
        </script>
Добавлено через 1 минуту
Некорректные даты не обрабатываются (по крайней мере в лисе), поэтому 31-е апреля заменил тридцатым.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2018, 11:09
Помогаю со студенческими работами здесь

Как при изменении одного <select> подгрузить в другой <select> данные...
Как при изменении одного &lt;select&gt; подгрузить в другой &lt;select&gt; данные... пример: с марками машин. При выборе 'TOYOTA'...

Скрывать select если в другом select выбран определенный value
допустим есть форма &lt;form&gt; &lt;select id=&quot;i1&quot; name=&quot;price1&quot;&gt; &lt;option value=&quot;0&quot;&gt;нет&lt;/option&gt; &lt;option...

Вставка изображений в select и создание зависимости между соседним select
Добрый день! Есть вот такая конструкция: https://codepen.io/fromthemoon/pen/NVBLQj Необходимо, чтобы при выборе первого значения...

Изменение вместимого select-a в зависимости от выбора из другого select-a
У меня есть 2 селекта. В первом 2 варианта (&quot;символы&quot;,&quot;цифры&quot;). Подскажите как сделать чтобы если выбрано &quot;цифры&quot; во втором...

Какое условие сделать чтобы от выбранного значения в select другой select принимал определенные значения?
выбираем например книгу и потом во втором select должно изменится значение &lt;label for=&quot;username&quot;&gt;Наименование...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru