我有两个输入来选择每小时范围,如下所示:
<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"]
如果结束时间输入大于开始时间输入,我找到了一种方法,如下所示
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"]
注意:我只想存储时间
谢谢。
最佳答案
根据解释和大量假设,我正在写这个答案。
在写答案之前,我希望你纠正这部分。您需要 .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>
关于javascript - 使用 24 小时格式的小时列表填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61591311/