如何设置结束时间以给我正确的间隔
How to set end time to give me correct intervals?
我正在尝试修复JQuery时间选择器,以便给我正确的结束时间。当我选择开始时间和间隔时,我当前的代码运行良好。示例:如果我选择上午8:00并选择间隔30min,我的结束时间将自动为上午8:30,但我的问题来了,因为我想在那之后,当我点击我的下拉菜单"结束时间"时,看到间隔,如上午8:30(我有),上午9:00,上午9:30。。。一直到下午5点,这是我最后一次。这是我的HTML代码:
$(function() {
for (var i = 5; i <= 60; i += 5) {
$('#meeting').append('<option value="' + i + '">' + i + ' min' + '</option>');
}
function setEndTime() {
var meetingLength = parseInt($('#meeting').find('option:selected').val() || 0);
var selectedTime = $('#stime').timepicker('getTime');
if (selectedTime == null || selectedTime == "") {
alert("Please select the start time.");
} else {
selectedTime.setMinutes(selectedTime.getMinutes() + parseInt(meetingLength, 10), 0);
$('#etime').timepicker('setTime', selectedTime);
}
}
$('#stime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': 30
}).on(function() {
setEndTime();
});
$('#etime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': 5
});
$('#meeting').bind('change', function() {
setEndTime();
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.min.js"></script>
<tr>
<th>Start Time:</th>
<td>
<input type="text" id="stime" name="stime" class="time" />
</td>
</tr>
<tr>
<th>Length of meeting:</th>
<td>
<select name="meeting" id="meeting">
<option value="">--Select length--</option>
</select>
</td>
</tr>
<tr>
<th>End Time:</th>
<td>
<input type="text" id="etime" name="etime" class="time">
</td>
</tr>
我不确定应该在哪里修改我的代码,以便根据所选的间隔给出结束时间。如果看到我的代码破解在哪里,请告诉我。非常感谢。
使用以下间隔将#etime的step
属性更改为函数(因此为动态值):
$('#etime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': function(i) {
return $('#meeting').val() || 5;
}
});
可运行示例
$(function() {
for (var i = 5; i <= 60; i += 5) {
$('#meeting').append('<option value="' + i + '">' + i + ' min' + '</option>');
}
function setEndTime() {
var meetingLength = parseInt($('#meeting').find('option:selected').val() || 0);
var selectedTime = $('#stime').timepicker('getTime');
if (selectedTime == null || selectedTime == "") {
alert("Please select the start time.");
} else {
selectedTime.setMinutes(selectedTime.getMinutes() + parseInt(meetingLength, 10), 0);
$('#etime').timepicker('setTime', selectedTime);
}
}
$('#stime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': 30
}).on(function() {
setEndTime();
});
$('#etime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': 5
});
$('#meeting').bind('change', function() {
$('#etime').timepicker('remove');
$('#etime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': $('#meeting').val()
});
setEndTime();
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.min.js"></script>
<tr>
<th>Start Time:</th>
<td>
<input type="text" id="stime" name="stime" class="time" />
</td>
</tr>
<tr>
<th>Length of meeting:</th>
<td>
<select name="meeting" id="meeting">
<option value="">--Select length--</option>
</select>
</td>
</tr>
<tr>
<th>End Time:</th>
<td>
<input type="text" id="etime" name="etime" class="time">
</td>
</tr>
编辑
由于选择器在间隔更改时不会刷新,因此有一个肮脏的技巧可以强制刷新,完全删除选择器并重新创建它(我编辑了上面的片段):
$('#etime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': 5
});
$('#meeting').bind('change', function() {
$('#etime').timepicker('remove');
$('#etime').timepicker({
'timeFormat': 'h:i a',
'minTime': '8:00 AM',
'maxTime': '5:00 PM',
'step': $('#meeting').val()
});
setEndTime();
});
相关文章:
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- Javascript设置日期不起作用,显示错误的时间
- 如何设置特定时间的本地通知
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何在javascript中设置时间间隔
- 尝试设置时间时Moment JS Deprecation警告
- 更改默认时区后,如何在本地时间设置时刻格式
- 如何在时间标签和相同的类中以UTC格式重新格式化ISO 8601时间戳,并通过JavaScript根据用户区域设置和时区
- 使用HTML5 Navigation Timing API时,导航开始时间设置为0
- 我想以时间戳的形式将日期设置为无限
- 在 Google 图表 y 轴上将时间格式设置为小时:分钟
- 使用 JavaScript 在秒表中将时间值设置为零
- 具有可变时间的设置超时函数
- d3时间刻度设置初始缩放级别和域
- 对于动态变化的时间,设置nvd3 x域范围的最佳方法是什么
- 仅在一天中的特定时间以设置的间隔运行函数
- 如何在d3中为日期时间尺度设置适当的域
- 引导日期-时间picker设置当前日期在我的格式
- D3js时间轴滴答持续时间动态设置
- 在任何时间日期选择器中以编程方式设置时区偏移量