html和js写前端一个下拉选择框、两个时间选择器,第一个日期选择器只可以选择明天以后的日期,根据下拉选择框选中为短假,则第二日期选择器的选择范围为一个个时间选择器的后3天
时间: 2023-09-06 08:04:54 浏览: 118
利用Query+bootstrap和js两种方式实现日期选择器
### 回答1:
下面是一个简单的示例代码,使用HTML和JS实现一个下拉选择框和两个日期选择器:
```html
<!DOCTYPE html>
<html>
<head>
<title>下拉选择框和日期选择器</title>
</head>
<body>
<label for="vacation-type">选择假期类型:</label>
<select id="vacation-type">
<option value="long">长假</option>
<option value="short">短假</option>
</select>
<br><br>
<label for="start-date">选择开始日期:</label>
<input type="date" id="start-date" min="" disabled>
<br><br>
<label for="end-date">选择结束日期:</label>
<input type="date" id="end-date" min="" disabled>
<script>
// 获取DOM元素
const vacationTypeSelect = document.getElementById("vacation-type");
const startDateInput = document.getElementById("start-date");
const endDateInput = document.getElementById("end-date");
// 获取当前日期
const today = new Date();
const tomorrow = new Date(today);
tomorrow.setDate(tomorrow.getDate() + 1);
// 设置第一个日期选择器的最小值为明天
startDateInput.min = tomorrow.toISOString().slice(0, 10);
// 选择假期类型时更新第二个日期选择器的最小值
vacationTypeSelect.addEventListener("change", (event) => {
const selectedValue = event.target.value;
const minDate = new Date();
if (selectedValue === "long") {
// 如果选择的是长假,则第二个日期选择器的最小值为第一个日期选择器的后3天
minDate.setDate(minDate.getDate() + 3);
} else if (selectedValue === "short") {
// 如果选择的是短假,则第二个日期选择器的最小值为第一个日期选择器的后1天
minDate.setDate(minDate.getDate() + 1);
}
endDateInput.min = minDate.toISOString().slice(0, 10);
endDateInput.disabled = false;
});
// 第二个日期选择器的最小值默认为第一个日期选择器的后1天
endDateInput.min = tomorrow.toISOString().slice(0, 10);
</script>
</body>
</html>
```
代码中使用了`<select>`元素和两个`<input type="date">`元素来实现下拉选择框和日期选择器。首先获取这些元素的引用,然后设置第一个日期选择器的最小值为明天。当用户选择假期类型时,根据选择的值更新第二个日期选择器的最小值。如果选择的是长假,则第二个日期选择器的最小值为第一个日期选择器的后3天;如果选择的是短假,则第二个日期选择器的最小值为第一个日期选择器的后1天。最后将第二个日期选择器的最小值默认设置为第一个日期选择器的后1天。
### 回答2:
首先,我们可以使用HTML创建一个下拉选择框和两个时间选择器。
HTML代码如下所示:
```html
<select id="vacationType">
<option value="short">短假</option>
<option value="long">长假</option>
</select>
<input type="date" id="startDate" min="" />
<input type="date" id="endDate" min="" />
```
在JavaScript中,我们可以设置第一个日期选择器的最小日期为明天,以确保只能选择明天以后的日期。然后,我们可以根据下拉选择框的选中值设置第二个日期选择器的选择范围。
JavaScript代码如下所示:
```javascript
// 获取日期选择器元素
const startDate = document.getElementById("startDate");
const endDate = document.getElementById("endDate");
// 获取当前日期
const today = new Date();
today.setDate(today.getDate() + 1); // 设置为明天
// 设置第一个日期选择器的最小日期为明天
startDate.min = today.toISOString().split("T")[0];
// 监听下拉选择框的变化
document.getElementById("vacationType").addEventListener("change", function() {
if (this.value === "short") {
// 如果选择的是短假,则第二个日期选择器的选择范围为第一个日期选择器的后3天
const threeDaysLater = new Date(today);
threeDaysLater.setDate(today.getDate() + 3);
endDate.min = threeDaysLater.toISOString().split("T")[0];
} else {
// 如果选择的是长假,则第二个日期选择器的选择范围为第一个日期选择器的后10天
const tenDaysLater = new Date(today);
tenDaysLater.setDate(today.getDate() + 10);
endDate.min = tenDaysLater.toISOString().split("T")[0];
}
});
```
当下拉选择框的值发生变化时,根据选择的值来设置第二个日期选择器的最小日期。如果选择的是短假,第二个日期选择器的最小日期将是第一个日期选择器的后3天;如果选择的是长假,第二个日期选择器的最小日期将是第一个日期选择器的后10天。
以上就是使用HTML和JavaScript创建一个下拉选择框和两个时间选择器,并根据选择框选中的值设置第二个日期选择器的选择范围的解答。
### 回答3:
可以使用HTML和JavaScript来写一个前端的下拉选择框和两个时间选择器。首先,在HTML中创建一个下拉选择框和两个日期选择器的输入框。
```html
<select id="vacationType">
<option value="short">短假</option>
<option value="long">长假</option>
</select>
<input type="date" id="startDate">
<input type="date" id="endDate">
```
然后,在JavaScript中获取这些元素,并为它们添加事件监听器,以实现你的需求。
```javascript
// 获取元素
var vacationTypeSelect = document.getElementById("vacationType");
var startDateInput = document.getElementById("startDate");
var endDateInput = document.getElementById("endDate");
// 添加事件监听器
vacationTypeSelect.addEventListener("change", function() {
updateDateRange();
});
startDateInput.addEventListener("change", function() {
updateDateRange();
});
// 更新日期范围
function updateDateRange() {
var selectedType = vacationTypeSelect.value;
var startDate = new Date(startDateInput.value);
if (selectedType === "short") {
// 设置第一个日期选择器的选择范围为明天以后的日期
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
startDateInput.min = tomorrow.toISOString().split("T")[0];
// 设置第二个日期选择器的选择范围为第一个日期选择器之后3天
var endDate = new Date(startDate);
endDate.setDate(endDate.getDate() + 3);
endDateInput.min = endDate.toISOString().split("T")[0];
} else if (selectedType === "long") {
// 设置第一个日期选择器的选择范围为今天以后的日期
startDateInput.min = new Date().toISOString().split("T")[0];
// 设置第二个日期选择器的选择范围为第一个日期选择器之后7天
var endDate = new Date(startDate);
endDate.setDate(endDate.getDate() + 7);
endDateInput.min = endDate.toISOString().split("T")[0];
}
}
// 页面加载时初始化日期范围
updateDateRange();
```
以上代码会根据下拉选择框的选中值和第一个日期选择器的选择值来更新第一个日期选择器和第二个日期选择器的选择范围。如果选择"短假",第一个日期选择器的选择范围是明天以后的日期,第二个日期选择器的选择范围是第一个日期选择器之后3天。如果选择"长假",第一个日期选择器的选择范围是今天以后的日期,第二个日期选择器的选择范围是第一个日期选择器之后7天。
阅读全文