>我正在使用此处略微修改的脚本版本,在开始和结束时间之间选择开始时间
脚本
$(window).on('load', function() {
$("select[name='SelectedTime1']").on("change", function(){
$("select[name='SelectedTime2']").empty();
var startix = $("select[name='SelectedTime1'] option:selected").index();
$("select[name='SelectedTime1'] option").each(function(ix, el){
if (ix >= startix) {
$(this).clone().appendTo("select[name='SelectedTime2']");
}
});
});
});
脚本,用于在页面重新加载后在每个下拉列表中保留所选时间。
function show2(time1) {
var success = -1;
for (var i=0; i < document.frmLocate.SelectedTime1.length; i++) {
if (document.frmLocate.SelectedTime1.options[i].value == time)
success = [i];
}
document.frmLocate.SelectedTime1.selectedIndex=success;
}
function show4(time2) {
var success = -1;
for (var i=0; i < document.frmLocate.SelectedTime2.length; i++) {
if (document.frmLocate.SelectedTime2.options[i].value == time)
success = [i];
}
document.frmLocate.SelectedTime2.selectedIndex=success;
下拉列表
<label for="SelectedTime1-set">1st Time:
<select name="SelectedTime1" id="SelectedTime1-set">
<option>08:00 AM </option>
<option>09:00 AM</option>
<option>10:00 AM</option>
<option>11:00 AM</option>
<option>12:00 PM</option>
<option>01:00 PM</option>
<option>02:00 PM</option>
<option>03:00 PM</option>
<option>04:00 PM</option>
<option>05:00 PM</option>
<option>06:00 PM</option>
<option>07:00 PM</option>
<option>08:00 PM</option>
<option>09:00 PM</option>
</select></label>
<label for="SelectedTime2-set">2nd Time:
<select name="SelectedTime2" id="SelectedTime2-set">
<option>08:00 AM </option>
<option>09:00 AM</option>
<option>10:00 AM</option>
<option>11:00 AM</option>
<option>12:00 PM</option>
<option>01:00 PM</option>
<option>02:00 PM</option>
<option>03:00 PM</option>
<option>04:00 PM</option>
<option>05:00 PM</option>
<option>06:00 PM</option>
<option>07:00 PM</option>
<option>08:00 PM</option>
<option>09:00 PM</option>
</select></label>
这两个下拉列表是表单的一部分,该表单在执行 API 请求后提交回页面,并且 SelectedTime2 不应在 SelectedTime1 之前
这两个下拉列表具有相同的选项上午 8 点到晚上 9 点。 脚本将隐藏选定时间 2 中在选定时间 1 中选择的时间之前的时间。
我需要发生的事情:发布表单后,让 SelectedTime2 中的较早时间保持隐藏状态。
所选时间在发布后保留,但选定时间 2 中的较早时间取消隐藏。
我希望防止将来的技术支持呼叫"为什么页面是空白的",因为他们不注意AM/PM。 他们首先选择6PM,然后在应该是9PM时选择9AM 2nd。
谢谢
肖恩
做了一些内务处理并将 2 合并为 1 个函数
下拉列表
<label for="StartTime-set">1st Time:
<select name="StartTime" id="StartTime-set" onchange="setEndDate()">
<option>08:00 AM </option>
<option>09:00 AM</option>
<option>10:00 AM</option>
<option>11:00 AM</option>
<option>12:00 PM</option>
<option>01:00 PM</option>
<option>02:00 PM</option>
<option>03:00 PM</option>
<option>04:00 PM</option>
<option>05:00 PM</option>
<option>06:00 PM</option>
<option>07:00 PM</option>
<option>08:00 PM</option>
<option>09:00 PM</option>
</select>
</label>
<label for="EndTime-set">2nd Time:
<select name="EndTime" id="EndTime-set">
<option>08:00 AM </option>
<option>09:00 AM</option>
<option>10:00 AM</option>
<option>11:00 AM</option>
<option>12:00 PM</option>
<option>01:00 PM</option>
<option>02:00 PM</option>
<option>03:00 PM</option>
<option>04:00 PM</option>
<option>05:00 PM</option>
<option>06:00 PM</option>
<option>07:00 PM</option>
<option>08:00 PM</option>
<option>09:00 PM</option>
</select>
</label>
函数
function setEndDate() {
$("select[name='EndTime']").empty();
var startix = $("select[name='StartTime'] option:selected").index();
$("select[name='StartTime'] option").each(function(ix, el){
if (ix >= startix) {
$(this).clone().appendTo("select[name='EndTime']");
}
});
var success = -1;
for (var i=0; i < document.frmLocate.EndTime.length; i++) {
if (document.frmLocate.EndTime.options[i].value == endTime)
success = [i];
}
document.frmLocate.EndTime.selectedIndex=success;
}
身体标签
<body onload="setEndDate()">
当页面加载或更改"开始时间"下拉列表时,将设置"结束时间"下拉列表。 首次加载页面时,必须为 EndTime 做出初始选择,这在我的情况下更可取。
希望有人会发现它有用或建议进行一些额外的清理。