-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431

Скрипт, определяющий по введенной дате рождения знак зодиака

19.07.2025, 15:02. Показов 1698. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<button id="minusWeek">-</button>
<button id="plusWeek">+</button>
<select id="desiredDay"></select>
<button id="minusDay">-</button>
<button id="plusDay">+</button>
<select id="desiredMonth"></select>
<button id="minusMonth">-</button>
<button id="plusMonth">+</button>
<button id="today"></button>
<script>
скрипт для выбора даты... 
</script>
<div id="zodiacSign"></div>
есть такой html

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<script>
  var zodiacSigns = [
    { html: '<span class="bBold">Овен</span> <span class="zodiacGlyph">♈</span><br><span class="bNormal">21 марта — 20 апреля</span>', date: [3, 21] },
    { html: '<span class="bBold">Телец</span> <span class="zodiacGlyph">♉</span><br><span class="bNormal">21 апреля — 20 мая</span>', date: [4, 21] },
    { html: '<span class="bBold">Близнецы</span> <span class="zodiacGlyph">♊</span><br><span class="bNormal">21 мая — 21 июня</span>', date: [5, 21] },
    { html: '<span class="bBold">Рак</span> <span class="zodiacGlyph">♋</span><br><span class="bNormal">22 июня — 22 июля</span>', date: [6, 22] },
    { html: '<span class="bBold">Лев</span> <span class="zodiacGlyph">♌</span><br><span class="bNormal">23 июля — 22 августа</span>', date: [7, 23] },
    { html: '<span class="bBold">Дева</span> <span class="zodiacGlyph">♍</span><br><span class="bNormal">23 августа — 22 сентября</span>', date: [8, 23] },
    { html: '<span class="bBold">Весы</span> <span class="zodiacGlyph">♎</span><br><span class="bNormal">23 сентября — 22 октября</span>', date: [9, 23] },
    { html: '<span class="bBold">Скорпион</span> <span class="zodiacGlyph">♏</span><br><span class="bNormal">23 октября — 21 ноября</span>', date: [10, 23] },
    { html: '<span class="bBold">Стрелец</span> <span class="zodiacGlyph">♐</span><br><span class="bNormal">23 ноября — 22 декабря</span>', date: [11, 23] },
    { html: '<span class="bBold">Козерог</span> <span class="zodiacGlyph">♑</span><br><span class="bNormal">21 декабря — 19 января</span>', date: [12, 21] },
    { html: '<span class="bBold">Водолей</span> <span class="zodiacGlyph">♒</span><br><span class="bNormal">20 января — 19 февраля</span>', date: [1, 20] },
    { html: '<span class="bBold">Рыбы</span> <span class="zodiacGlyph">♓</span><br><span class="bNormal">20 февраля — 20 марта</span>', date: [2, 20] }
  ];
 
  var desiredDay = document.getElementById('desiredDay');
  var desiredMonth = document.getElementById('desiredMonth');
  var zodiacSignDiv = document.getElementById('zodiacSign');
 
  function isDateLessOrEqual(date1, date2) {
    if (date1[0] < date2[0]) return true;
    if (date1[0] === date2[0] && date1[1] <= date2[1]) return true;
    return false;
  }
 
  function findZodiac(monthZeroBased, day) {
    var month = monthZeroBased + 1;
    var selectedDate = [month, day];
    for (var i = zodiacSigns.length - 1; i >= 0; i--) {
      var signDate = zodiacSigns[i].date;
      if (isDateLessOrEqual(signDate, selectedDate)) {
        return zodiacSigns[i].html;
      }
    }
    return zodiacSigns[zodiacSigns.length - 1].html;
  }
 
  function updateZodiac() {
    var day = parseInt(desiredDay.value, 10);
    var month = parseInt(desiredMonth.value, 10);
    if (!isNaN(day) && !isNaN(month)) {
      zodiacSignDiv.innerHTML = findZodiac(month, day);
    } else {
      zodiacSignDiv.innerHTML = '';
    }
  }
  desiredDay.addEventListener('change', updateZodiac);
  desiredMonth.addEventListener('change', updateZodiac);
 
  updateZodiac();
</script>
скрипт вставляет последний знак зодиака, а по идее должен вставлятся знак соответствующий дате в селектах

скрипт должен
1. считать данные из селект
2. сравнить значения из селектов и значения в массиве, найти в массиве ближайшую дату, меньше или равную дате из селектов, и вставить в див соответствующий хтмл код
3. скрипт должен реагировать как на ручной выбор значений в селектах , так и на изменение даты при клике на кнопки... помогите исправить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.07.2025, 15:02
Ответы с готовыми решениями:

Скрипт, определяющий по введенной дате рождения знак зодиака, день недели, был ли год рождения високосным.
Здравствуйте, ребят буду благодарен если кто напишет, в написанном постараюсь разобраться сам. ...

Даны два целых числа: D (день) и M (месяц), определяющие дату. Вывести знак Зодиака, соответствующий этой дате.
Даны два целых числа: D (день) и M (месяц), определяющие дату. Вывести знак Зодиака,...

Написать скрипт, который определяет по введенной дате рождения сколько было лет в период всей жизни
Написать скрипт, который определяет по введенной дате рождения сколько было лет в период всей...

37
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
24.07.2025, 06:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Ну вот открой любой учебник по JS'у и почитай эти самые буквы из алфавита.
Ну с другой стороны, например, Object.entries() выдает массив массивов
[[key1, value1], [key2, valu2],...]
, а не массив объектов
[{key: key1, value: value1}, {key: key2, value: value3},....]
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,356
24.07.2025, 10:25
бел ка, дело не в буквах... Дело в самой структуре данных.
Даже если все пихать в массивы - тогда уже лучше так

JavaScript
1
["Водолей", "♒", ["21 января — 19 февраля", "20 января — 18 февраля"], [21, 20]]
С таким вариантом будет всяко удобнее работать.

Только у тебя опять придется преобразовывать строку ru в номер индекса. В случае с объектом значение строки можно было бы использовать без всяких преобразований.
Т.ч. ты "экономишь" в одном, но тут же генериш кучу "вспомогательного" текста в программе.

По формированию структур данных написано много учебников. Т.ч. это "объяснить" довольно утомительно.
Почитай для начала про первую, вторую и третью "нормальные формы". Это, можно сказать, основные критерии при построении структуры данных...
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
24.07.2025, 23:06  [ТС]
Usaga, речь не "про вдабливал", просто интересно мнения разных людей, чисто в двух словах, чем удобнее и лучше разные структуры массивов...
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
25.07.2025, 06:52
Цитата Сообщение от krvsa Посмотреть сообщение
С таким вариантом будет всяко удобнее работать.
arr[i][3] все же удобнее, чем arr[i][2][1]
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,356
25.07.2025, 08:52
voraa, лишний раз убеждаюсь что мнения у людей разные...
Для меня "одинаковая" информация должна лежать в "одном месте", а не в куче с "другой".
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.07.2025, 12:10  [ТС]
в итоге пришла к такому варианту

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<script>
  (function() {
    var versionSelect = document.getElementById('versionSelect');
    var daySelect = document.getElementById('desiredDay');
    var monthSelect = document.getElementById('desiredMonth');
    var zodiacDiv = document.getElementById('zodiacSignInfo');
 
    // Заполнить селект выбора версии знаков зодиака
    function fillVersionSelect() {
      var versions = [
        {value: 'ru', text: 'Русская версия'},
        {value: 'classic', text: 'Классическая версия'}
      ];
      versionSelect.innerHTML = '';
      versions.forEach(function(v){
        var opt = document.createElement('option');
        opt.value = v.value;
        opt.textContent = v.text;
        versionSelect.appendChild(opt);
      });
    }
 
    // Массив знаков зодиака с вашей структурой
    var zodiacSigns = [
      {
        name: "Овен",
        symbol: "♈",
        ru: { rangeText: "21 марта — 20 апреля", startDay: 21 },
        classic: { rangeText: "21 марта — 19 апреля", startDay: 21 }
      },
      {
        name: "Телец",
        symbol: "♉",
        ru: { rangeText: "21 апреля — 21 мая", startDay: 21 },
        classic: { rangeText: "20 апреля — 20 мая", startDay: 20 }
      },
      {
        name: "Близнецы",
        symbol: "♊",
        ru: { rangeText: "22 мая — 21 июня", startDay: 22 },
        classic: { rangeText: "21 мая — 20 июня", startDay: 21 }
      },
      {
        name: "Рак",
        symbol: "♋",
        ru: { rangeText: "22 июня — 22 июля", startDay: 22 },
        classic: { rangeText: "21 июня — 22 июля", startDay: 21 }
      },
      {
        name: "Лев",
        symbol: "♌",
        ru: { rangeText: "23 июля — 22 августа", startDay: 23 },
        classic: { rangeText: "23 июля — 22 августа", startDay: 23 }
      },
      {
        name: "Дева",
        symbol: "♍",
        ru: { rangeText: "23 августа — 23 сентября", startDay: 23 },
        classic: { rangeText: "23 августа — 22 сентября", startDay: 23 }
      },
      {
        name: "Весы",
        symbol: "♎",
        ru: { rangeText: "24 сентября — 23 октября", startDay: 24 },
        classic: { rangeText: "23 сентября — 22 октября", startDay: 23 }
      },
      {
        name: "Скорпион",
        symbol: "♏",
        ru: { rangeText: "24 октября — 22 ноября", startDay: 24 },
        classic: { rangeText: "23 октября — 21 ноября", startDay: 23 }
      },
      {
        name: "Стрелец",
        symbol: "♐",
        ru: { rangeText: "23 ноября — 22 декабря", startDay: 23 },
        classic: { rangeText: "22 ноября — 21 декабря", startDay: 22 }
      },
      {
        name: "Козерог",
        symbol: "♑",
        ru: { rangeText: "22 декабря — 20 января", startDay: 22 },
        classic: { rangeText: "22 декабря — 19 января", startDay: 22 }
      },
      {
        name: "Водолей",
        symbol: "♒",
        ru: { rangeText: "21 января — 19 февраля", startDay: 21 },
        classic: { rangeText: "20 января — 18 февраля", startDay: 20 }
      },
      {
        name: "Рыбы",
        symbol: "♓",
        ru: { rangeText: "20 февраля — 20 марта", startDay: 20 },
        classic: { rangeText: "19 февраля — 20 марта", startDay: 19 }
      }
    ];
 
    // Функция определения знака зодиака по дню, месяцу и версии
    function getZodiac(day, month, signs, version) {
      var index = month - 2;
      if (index < 0) index += 12;
 
      var startDay = signs[index][version].startDay;
      if (day >= startDay) {
        return {
          name: signs[index].name,
          symbol: signs[index].symbol,
          range: signs[index][version].rangeText
        };
      } else {
        var prevIndex = (index + 11) % 12;
        return {
          name: signs[prevIndex].name,
          symbol: signs[prevIndex].symbol,
          range: signs[prevIndex][version].rangeText
        };
      }
    }
 
    // Обновить вывод знака зодиака
    function updateZodiacSignInfo() {
      var day = parseInt(daySelect.value, 10);
      var month = parseInt(monthSelect.value, 10);
      if (!day || !month) {
        zodiacDiv.innerHTML = '';
        return;
      }
      var version = versionSelect.value || 'ru';
      var sign = getZodiac(day, month, zodiacSigns, version);
      var html = '<span class="bBold">' + sign.name + '</span> ' +
                 '<span class="zodiacGlyph">' + sign.symbol + '</span><br>' +
                 '<span class="bNormal">' + sign.range + '</span>';
      zodiacDiv.innerHTML = html;
    }
 
    // Инициализация
    fillVersionSelect();
 
    var desiredDay = document.getElementById('desiredDay');
    var desiredMonth = document.getElementById('desiredMonth');
    var desiredYear = document.getElementById('desiredYear');
    var desiredEra = document.getElementById('desiredEra');
    var versionSelect = document.getElementById('versionSelect');
 
    // Подписка на события изменения даты и версии
    [desiredDay, desiredMonth, desiredYear, desiredEra, versionSelect].forEach(function(el) {
      el.addEventListener('change', updateZodiacSignInfo);
    });
 
    // Добавляем обработчики кнопок, чтобы обновлять знак при изменении даты
    var buttonsIds = ['minusWeek', 'plusWeek', 'minusDay', 'plusDay', 'minusMonth', 'plusMonth', 'minusYear', 'plusYear', 'minusEra', 'plusEra', 'today'];
    buttonsIds.forEach(function(id) {
      var btn = document.getElementById(id);
      if (btn) {
        btn.addEventListener('click', updateZodiacSignInfo);
      }
    });
 
    // Обработчик для инпута года (input событие)
    if (desiredYear) {
      desiredYear.addEventListener('input', updateZodiacSignInfo);
    }
 
    // Периодическое отслеживание изменений (включая программные)
    var lastValues = {
      day: daySelect.value,
      month: monthSelect.value,
      year: desiredYear ? desiredYear.value : null,
      era: desiredEra ? desiredEra.value : null,
      version: versionSelect.value
    };
 
    function pollChanges() {
      var day = daySelect.value;
      var month = monthSelect.value;
      var year = desiredYear ? desiredYear.value : null;
      var era = desiredEra ? desiredEra.value : null;
      var version = versionSelect.value;
 
      if (
        day !== lastValues.day ||
        month !== lastValues.month ||
        year !== lastValues.year ||
        era !== lastValues.era ||
        version !== lastValues.version
      ) {
        lastValues.day = day;
        lastValues.month = month;
        lastValues.year = year;
        lastValues.era = era;
        lastValues.version = version;
        updateZodiacSignInfo();
      }
    }
 
    setInterval(pollChanges, 300);
 
    // При загрузке страницы инициализируем вывод
    window.addEventListener('load', updateZodiacSignInfo);
  })();
</script>
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.07.2025, 12:50  [ТС]
как правильно сделать обновление элементов формы в полночь?

1. определить время до конца суток

2. за несколько милисекунд до полуночи, проверить, равна ли дата текущей, или другими словами, не совершает ли пользователь какие-то операции с формой...

3. если дата в селектах и инпуте равна текущей, в полночь автоматически обновить дату

4. если дата не равна текущей (пользователь что-то делает), обновить дату в кнопке сегодня (в спане center)

5. поскольку пользователь не будет находится на сайте более суток, обновить один раз, нет необходимости делать обновление спустя 24ч после первого обновления
Вложения
Тип файла: zip calend.zip (6.1 Кб, 0 просмотров)
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
27.07.2025, 07:53  [ТС]
krvsa,

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var zodiacSigns = [
      {
        name: "Овен",
        symbol: "♈",
        ru: { rangeText: "21 марта — 20 апреля", startDay: 21 },
        classic: { rangeText: "21 марта — 19 апреля", startDay: 21 }
      },
      {
        name: "Телец",
        symbol: "♉",
        ru: { rangeText: "21 апреля — 21 мая", startDay: 21 },
        classic: { rangeText: "20 апреля — 20 мая", startDay: 20 }
      },
      {
        name: "Близнецы",
        symbol: "♊",
        ru: { rangeText: "22 мая — 21 июня", startDay: 22 },
        classic: { rangeText: "21 мая — 20 июня", startDay: 21 }
      },
      {
        name: "Рак",
        symbol: "♋",
        ru: { rangeText: "22 июня — 22 июля", startDay: 22 },
        classic: { rangeText: "21 июня — 22 июля", startDay: 21 }
      },
      {
        name: "Лев",
        symbol: "♌",
        ru: { rangeText: "23 июля — 22 августа", startDay: 23 },
        classic: { rangeText: "23 июля — 22 августа", startDay: 23 }
      },
      {
        name: "Дева",
        symbol: "♍",
        ru: { rangeText: "23 августа — 23 сентября", startDay: 23 },
        classic: { rangeText: "23 августа — 22 сентября", startDay: 23 }
      },
      {
        name: "Весы",
        symbol: "♎",
        ru: { rangeText: "24 сентября — 23 октября", startDay: 24 },
        classic: { rangeText: "23 сентября — 22 октября", startDay: 23 }
      },
      {
        name: "Скорпион",
        symbol: "♏",
        ru: { rangeText: "24 октября — 22 ноября", startDay: 24 },
        classic: { rangeText: "23 октября — 21 ноября", startDay: 23 }
      },
      {
        name: "Стрелец",
        symbol: "♐",
        ru: { rangeText: "23 ноября — 22 декабря", startDay: 23 },
        classic: { rangeText: "22 ноября — 21 декабря", startDay: 22 }
      },
      {
        name: "Козерог",
        symbol: "♑",
        ru: { rangeText: "22 декабря — 20 января", startDay: 22 },
        classic: { rangeText: "22 декабря — 19 января", startDay: 22 }
      },
      {
        name: "Водолей",
        symbol: "♒",
        ru: { rangeText: "21 января — 19 февраля", startDay: 21 },
        classic: { rangeText: "20 января — 18 февраля", startDay: 20 }
      },
      {
        name: "Рыбы",
        symbol: "♓",
        ru: { rangeText: "20 февраля — 20 марта", startDay: 20 },
        classic: { rangeText: "19 февраля — 20 марта", startDay: 19 }
      }
    ];
Такой массив нормально?

Добавлено через 4 минуты
voraa, в той форме для выбора даты, этот код корректно будет обновлять дату в селектах и инпуте?

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
    // Функция вычисления миллисекунд до следующей полуночи
    function msUntilNextMidnight() {
        var now = new Date();
        var nextMidnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
        return nextMidnight.getTime() - now.getTime();
    }
    
    // Функция, вызываемая в полночь
    function midnightUpdate() {
        var now = new Date();
        var isSelectedToday = (
            currentDate.getDate() === now.getDate() &&
            currentDate.getMonth() === now.getMonth() &&
            currentDate.getFullYear() === now.getFullYear()
        );
    
        if (isSelectedToday) {
            updateControls(now);
        } else {
            updateTodayButton();
            toggleTodayButtonVisibility();
        }
    }
    
    setTimeout(midnightUpdate, msUntilNextMidnight());
    })();
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
27.07.2025, 10:51
Цитата Сообщение от бел ка Посмотреть сообщение
voraa, в той форме для выбора даты,
Вы думаете я вот так должен вот так помнить все формы?
Возьмите и проверьте.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,356
27.07.2025, 14:10
Цитата Сообщение от бел ка Посмотреть сообщение
Такой массив нормально?
Как по мне - да.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
27.07.2025, 21:48  [ТС]
есть как бы два разных скрипта, первый для выбора даты, второй для вывода актуального знака зодиака, так вот вопрос, если первый скрипт изменил дату программно, события в селектах и инпуте не срабатывает, как второму скрипту отслеживать подобные изменения?
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
27.07.2025, 22:16
Цитата Сообщение от бел ка Посмотреть сообщение
как второму скрипту отслеживать подобные изменения?
Никак. Либо переходить на React (но там тоже не просто меняешь значение, а меняешь состояние).
Либо просто первый скрипт должен как то после смены значения вызвать функцию из второго скрипта.
Как - не суть. Либо это прямой вызов, либо вызов по подписке (либо использовать библиотеку с подписками, либо самому реализовывать), либо генерить пользовательское событие...
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
28.07.2025, 00:45  [ТС]
voraa,

а если отслеживать изменения значений через `setInterval`.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(function() {
  var lastValues = {
    day: null,
    month: null,
    year: null,
    era: null
  };
  function checkDateChanges() {
    var day = document.getElementById('desiredDay').value;
    var month = document.getElementById('desiredMonth').value;
    var year = document.getElementById('desiredYear').value;
    var era = document.getElementById('desiredEra').value;
    if (day !== lastValues.day || month !== lastValues.month || year !== lastValues.year || era !== lastValues.era) {
      lastValues.day = day;
      lastValues.month = month;
      lastValues.year = year;
      lastValues.era = era;
      updateZodiacSignInfo();
    }
  }
  setInterval(checkDateChanges, 300);
})();
При программном изменении значений селектов или инпута, их `.value` изменится.
Периодически проверяем, изменились ли значения относительно предыдущих.
Если изменились — вызываем функцию обновления знака зодиака.
0
Эксперт .NET
 Аватар для Usaga
14323 / 9416 / 1356
Регистрация: 21.01.2016
Сообщений: 35,485
28.07.2025, 07:31
Цитата Сообщение от бел ка Посмотреть сообщение
а если отслеживать изменения значений через `setInterval`.
Это быдло-подход, который ещё и процессор нагружать будет.

Как надо делать выше написали довольно ясно.
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
28.07.2025, 09:06
Цитата Сообщение от бел ка Посмотреть сообщение
а если отслеживать изменения значений через `setInterval`.
Что сложного в генерации пользовательских событий?
В первом скрипте при смене значения у элемента

JavaScript
1
2
elem.value = 'Value'; // меняем значение
elem.dispatchEvent(new  CustomEvent("changevalue")); // вызываем событие, которое назвали "changevalue"
Во втором скрипте ловим это событие
JavaScript
1
2
3
elem.addEventListener("changevalue", function () {
   // Делаем что надо, когда значение изменилось
});
Добавлено через 25 минут
А можно и просто вызывать событие change при программной смене
В первом скрипте, когда программно меняем значение, программно вызываем событие 'change'
JavaScript
1
2
elem.value = 'Value'; // меняем значение
elem.dispatchEvent(new Event("change")); // вызываем событие "change"
Во втором скрипте ловим это событие. Оно будет вызываться и когда вводим руками и когда изменяем программно
JavaScript
1
2
3
elem.addEventListener("change", function () {
   // Делаем что надо, когда значение изменилось
})
Добавлено через 14 минут
Только надо учитывать, что dispatchEvent вызывает обработчик синхронно, без постановки в очередь событий. Так, как будто в этом месте был вызов функции обработчика. Если это не желательно, то dispatchEvent надо вызывать через setTimout
JavaScript
1
setTimeout(() => elem.dispatchEvent(new Event("change")), 0);
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
29.07.2025, 12:54  [ТС]
Usaga, этот вариант был предложен GPT...

Добавлено через 1 минуту
voraa, благодарю, будем с GPT пробовать исправить эти моменты...
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
29.07.2025, 14:06
Цитата Сообщение от бел ка Посмотреть сообщение
будем с GPT пробовать исправить эти моменты...
Какие?
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
30.07.2025, 14:37  [ТС]
voraa, ну сначала надо исправить обновление при наступлении новых суток, а потом добавить генерацию пользовательских событий, чтобы второй скрипт ловил изменения в форме, когда пользователь ввёл дату за пределами диапазона, и при наступлении новых суток дата меняется программно, и их и должен отследить второй скрипт, и не только второй но и все остальные где требуется ввод даты...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2025, 14:37
Помогаю со студенческими работами здесь

знак зодиака
Приветик. Помогите плиз написать сценарий, который по дате рождения человека определяет знак его...

Вывести соответствующий знак зодиака
Пользователь вводит дату рождения в виде строки: день-месяц-год. Ваша задача вывести...

Определить знак зодиака
У меня есть скрипт определяющий знак зодиака(через case of), проблема заключается в том, что у меня...

Как в спан вставить теперешний знак зодиака?
есть &lt;span id=&quot;zodiak&quot;&gt;&lt;/span&gt; как в него вставить какой сейчас знак зодиака, ♊ Близнецы&lt;br&gt;21...

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


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Опции темы

Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru