javascript - 更改选定日期时记住表单值
问题描述
我有一个用 HTML 构建的表单,如下所示:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function previousWeek() {
var dateStr = document.getElementById("my_date").value;
var date = new Date(dateStr);
var datePreviousWeek = new Date(date.getFullYear(), date.getMonth(), date.getUTCDate() - 7);
document.getElementById("my_date").value = datePreviousWeek.toISOString().slice(0, 10);
}
function nextWeek() {
var dateStr = document.getElementById("my_date").value;
var date = new Date(dateStr);
var datePreviousWeek = new Date(date.getFullYear(), date.getMonth(), date.getUTCDate() + 7);
document.getElementById("my_date").value = datePreviousWeek.toISOString().slice(0, 10);
}
</script>
<style>
.table {
display: table;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
}
</style>
</head>
<body>
<p>Availability Form</p>
<button onclick="previousWeek()">Previous Week</button>
<input type="date" id="my_date" />
<script type="text/javascript">
var now = new Date();
var daysUntilNextMonday = 7 - now.getDay() + 1;
var nextMonday = new Date(now.getFullYear(), now.getMonth(), now.getDate() + daysUntilNextMonday);
document.getElementById("my_date").value = nextMonday.toISOString().slice(0, 10);
</script>
<button onclick="nextWeek()">Next Week</button>
<form action="https://script.google.com/macros/s/AKfycbwVQja_SD4DTraHTWKH3rH81bveoIOB38U8PiSqiog/dev" method="post">
<div class="row">
<label>Email:</label>
<input type="text" name="email" />
</div>
<div class="row">
<label>First Name:</label>
<input type="text" name="firstName" />
</div>
<div class="row">
<label>Last Name:</label>
<input type="text" name="lastName" />
</div>
<div class="row">
<div class="table">
<div class="row">
<div class="cell">Available</div>
<div class="cell">Unavailable</div>
</div>
<div class="row">
<div class="cell">
<input type="radio" name="monday" value="available"/>
</div>
<div class="cell">
<input type="radio" name="monday" value="unavailable"/>
</div>
</div>
<div class="row">
<div class="cell">
<input type="radio" name="tuesday" value="available"/>
</div>
<div class="cell">
<input type="radio" name="tuesday" value="unavailable"/>
</div>
</div>
<div class="row">
<div class="cell">
<input type="radio" name="wednesday" value="available"/>
</div>
<div class="cell">
<input type="radio" name="wednesday" value="unavailable"/>
</div>
</div>
<div class="row">
<div class="cell">
<input type="radio" name="thursday" value="available"/>
</div>
<div class="cell">
<input type="radio" name="thursday" value="unavailable"/>
</div>
</div>
<div class="row">
<div class="cell">
<input type="radio" name="friday" value="available"/>
</div>
<div class="cell">
<input type="radio" name="friday" value="unavailable"/>
</div>
</div>
</div>
</div>
<div class="row">
<input type="submit" value="Send" />
</div>
</form>
</body>
</html>
问题是当用户点击“下周”或“上一周”按钮时,我需要清除当前的单选按钮选择(不是大问题)。但是,当他们回到他们已经输入的一周时,我需要记住他们已经输入的内容。此外,我需要在 POST 请求中将所有数据(不仅仅是显示的星期)发送到我的 REST API。
当用户更改几周(我不想这样做)时,如果不将其发布到服务器,我就找不到一种干净的方法来记住这些数据。
谢谢!
解决方案
定义您的数据考虑更改并需要保存的事件。它是在表单输入 keyup 事件还是更改事件上?
只需使用一个变量来保存该状态数据。那将是:
var state = [ {date: *somedate*, email: *someEmail*, name: *someName*, surname: *someSurname*}, {date: *someOtherDate*, email: *someEmail*, name: *someName*, surname: *someSurname*}, ];
最后,您可以将state
对象作为发布数据和您将拥有的所有数据发送。
推荐阅读
- sql - 检索前 12 条记录,同时在给定字段中保持相同的值
- slack - BotKit + Slack Adapter - 结束时如何删除对话?
- android - 在 React Native 中防止单个单词的文本换行
- php - BadMethodCallException:方法不存在
- css - 使用 rgba 值时的抗锯齿边界半径问题
- clion - 如何在 CLion 中保持内存视图打开?
- perl - 如何从我的示例数据中显示哈希值
- jenkins - Jenkins控制台脚本不同的结果
- c# - 如何将值添加到在运行时定义的列(WPF Datagrid)
- angular - ANGULAR:如何更改材料中所需的*?