Заполнить массив списком часов продолжительностью 24 часа - PullRequest
0 голосов
/ 04 мая 2020

У меня есть буксировочные входы для выбора часового диапазона, как показано ниже:

<input type="text" id="from" name="from" value="1:00" />
<input type="text" id="to" name="to" value="20:00" />

Я сохраняю данные в виде массива ниже, используя jQuery:

["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]

I нашел способ, как сделать это, если час-час ввода больше, чем час-от ввода, чем я делаю, как следует

let hoursTo = $('#to').val();
let hoursFrom = $('#from').val();
if (hoursFrom < hoursTo) {
        for (let i = hoursFrom; i <= hoursTo; i++) {
            runHoursArray.push(i.toString());
        }
    }else {
// need help in the store logic in order to cover nightshifts 
}

, но это не распространяется на ночное смещение поэтому мне нужна помощь для хранения данных, как показано ниже.

Ожидаемый результат:

, если я выберу с 19:00 до 2:00, он должен отображаться как это:

["19","20","21","22","23","0","1","2"]

Примечание: я хочу хранить только часы

Спасибо.

Ответы [ 2 ]

1 голос
/ 04 мая 2020

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

Прежде чем написать ответ, я хочу, чтобы вы исправили эту часть. Вам нужно .val() для сравнения. Вы не сравниваете элементы.

let hoursTo = $('#to').val();
let hoursFrom = $('#from').val();

Если вы хотите добавить также ночные смены, тогда да, вы должны разрешить такие значения. Что вы можете сделать, так это проверить продолжительность и, если продолжительность не гуманно, например, 23 часа (обычно никто не хотел бы работать 23 часа), скажите, что она недействительна.

Чтобы сделать это, вы можете сделать что-то вроде:

let hoursFrom = +$('#from').val();
let hoursTo = +$('#to').val();

$("button").click(function () {
  if ((hoursFrom > hoursTo && hoursTo + 24 - hoursFrom <= 12) || hoursFrom <= hoursTo) {
    console.log("Valid");
  } else {
    console.log("Invalid");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="from" type="number" />
<input id="to" type="number" />
<button>Validate</button>
0 голосов
/ 04 мая 2020

вдохновленный комментарием @CBroe, я сделал это следующим образом:

if (hoursFrom < hoursTo) {
        for (let i = hoursFrom; i <= (hoursTo + 1); i++) {
            if (i !== 24) {
                runHoursArray.push(i.toString());
            } else {
                runHoursArray.push("0");
            }
        }
    } else {
        for (let i = 0; i <= (hoursTo + 1); i++) {
            runHoursArray.push(i.toString());
        }
        if (hoursFrom > 12) {
            for (let j = hoursFrom; j <= 23; j++) {
                runHoursArray.push(j.toString());
            }
        } else {
            for (let i = hoursTo; i <= (hoursFrom + 1); i++) {
                runHoursArray.push(i.toString());
            }
        }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...