Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможно ли? (https://javascript.ru/forum/misc/78313-vozmozhno-li.html)

Блондинка 29.08.2019 07:06

рони,
Может тут надо применить конструкцию if else if?
Выводить сег. дату в элементах при загрузке страницы, при каждом событии onchange в элементах [day, date, month, year, type_year] проводить проверку, соответствуют ли введённые значения сег. дате и установлены ли селектед у обоих опций, если соответствует то показывать сег дату, если нет то присвоить селектед пустым опциям и удалить значение года

наверное так понятно?

P. S. проверять надо все пять элементов на соответствие...

рони 29.08.2019 11:06

Блондинка,
я пас, я не понимаю, что вы пишите и хотите сделать.

Блондинка 29.08.2019 11:24

есть скрипт
document.addEventListener('DOMContentLoaded', function() {
        var d = new Date();

        document.querySelector('#day').value = d.getDay()
        document.querySelector('#date').value = d.getDate();
        document.querySelector('#month').value = d.getMonth()+1;
        document.querySelector('#year').value = d.getFullYear();

        document.querySelector(#type_year)

        document.querySelector('#startdata').value = d.getFullYear() + '-01-01';
        document.querySelector('#stopdata').value = d.getFullYear() + '-12-31';
    });


есть элемент
<select id="type_year">
<option>год любой</option>
<option value="365">простой</option>
<option value="366">высокосный</option>
</select>


как присвоить селектед опции у которой нету value?

рони 29.08.2019 13:01

Блондинка,
document.querySelector('#type_year').value = "год любой";
   //или так 
document.querySelector('#type_year').selectedIndex = 0;

Блондинка 29.08.2019 20:53

Цитата:

Сообщение от рони (Сообщение 512301)
Блондинка,
я не понимаю, что вы пишите и хотите сделать.

я хочу чтобы при потере фокуса у любого элемента из пперечислгеныхх [day, date,, month, year, type_year], провести проверку на соответствие сегодн дате (первоначальным значениям), и стереть сег дату если первонач значения отличаются от текущих(после потери фокуса)

что именно тут непонятно?

рони 29.08.2019 21:56

Блондинка,
не могу помочь.

Блондинка 29.08.2019 21:58

рони,
я не знаю как объяснить, именно потому что не знаю что именно непонятно

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

рони 29.08.2019 22:17

Блондинка,
я не знаю как это сделать.

Aetae 29.08.2019 23:05

Ух, жесть. Нарисуйте макеты по каждому состоянию, иначе никуда не уедите.

Блондинка 29.08.2019 23:25

рони,
а можно м»изменить html код
<input type="date" id="startdata">
<input type="date" id="stopdata">

на
<select id="startdata"></select>
<select id="startmonth"></select>
<input id="startyear">
<select id="stopdata"></select>
<select id="stopmonth"></select>"
<input id="stopyear">

и сделать как тут?
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
 <meta charset="utf-8">
<style type="text/css">
	html{background: #fff;}
	body{width: 800px; margin: 20px auto; background: #ddd; padding: 20px; border: 1px solid}
	.empty{box-shadow: 0 0 10px #f00;}
</style>
<script>
window.onload = function () {
    var day = new Date,
        md = (new Date(day.getFullYear(), day.getMonth() + 1, 0, 0, 0, 0, 0)).getDate(),
        $month_name = "января февраля марта апреля мая июня июля августа сентября октября ноября декабря".split(" ");

    function set_select(a, c, d, e) {
        var el = document.getElementsByName(a)[0];
        for (var b = el.options.length = 0; b < c; b++) {
            el.options[b] = new Option(a == 'month' ? $month_name[b] : b + d, b + d);
         }
        el.options[e] && (el.options[e].selected = !0)
    }
    set_select("day", md, 1, day.getDate() - 1);
    set_select("month", 12, 1, day.getMonth());
    set_select("year", 11, day.getFullYear()-10, 10);

    document.getElementsByName('hour')[0].value = day.getHours()
    document.getElementsByName('minute')[0].value = day.getMinutes()

    var year = document.getElementById('year');
    var month = document.getElementById("month");

    function check_date() {
        var a = year.value | 0,
            c = month.value | 0;
        md = (new Date(a, c, 0, 0, 0, 0, 0)).getDate();
        a = document.getElementById("day").selectedIndex;
        set_select("day", md, 1, a)
    };

    if (document.addEventListener) {
        year.addEventListener('change', check_date, false);
        month.addEventListener('change', check_date, false);

    } else {
        year.detachEvent('onchange', check_date);
        month.detachEvent('onchange', check_date);
    }

}
</script>
</head>
<body>
<h3>Дата</h3>
<form action="" method="post">
<select name="day" id="day"></select>
<select name="month" id="month" ></select>
<select name="year" id="year" ></select>
<input type="text" name="hour" size="2" value="">
<input type="text" name="minute" size="2" value=""><br><br>
<input type="submit" value="Go">
</form>
</body>
</html>


Часовой пояс GMT +3, время: 18:17.