javascript - 当用户提交数据时,将用户输入的数据存储在 html 表中作为表的每一列的数组变量
问题描述
我有一个包含多行的 html 表,用户可以在其中输入一些字段详细信息,例如 Sprint、Role、Project、Comments 和剩余字段 SID、当用户单击 getDetails 按钮时从后端检索项目代码...用户可以在所有字段中输入数据现有 7 行表格或只能输入几行并单击 getDetails 按钮。我想将用户为每一列输入的数据存储在一个单独的数组变量中,以便我可以将此数组传递给我的后端功能。
示例演示:https ://plnkr.co/edit/wqvUY58921gzSp1RpUqJ?p=preview
我已经看到了在表中显示数组值的示例,但我的要求是将用户输入的每列数据存储在单独的表中。示例代码:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
function submitData(){
alert("submit");
var sprintFieldArray = [];
var roleFieldArray =[];
var projectFieldArray = [];
}
</script>
</head>
<body>
<table id="productTable" border="1">
<tr>
<th>Sprint <span style="color:red;">*</span></th>
<th>Role<span style="color:red;">*</span></th>
<th>Comments</th>
<th>Project<span style="color:red;">*</span></th>
<th>SID</th>
<th>Proj Code</th>
</tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
</tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td> </tr>
<tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td> </tr>
<tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td> </tr>
<tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td> </tr>
<tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td> </tr>
<tr>
<tr>
<td>
<select class="sprint" >
<option value=""></option>
<option value="">121.1</option>
<option value="">121.2</option>
<option value="">121.3</option>
<option value="">122.1</option>
<option value="">122.2</option>
</select>
</td>
<td>
<input type="text" name="role" value="" required>
</td>
<td>
<input type="text" name="Comments" value="">
</td>
<td>
<select class="project" >
<option value=""></option>
<option value="">ProA</option>
<option value="">ProB</option>
<option value="">ProC</option>
<option value="">ProD</option>
</select>
</td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td>
<td><!--dynamic value is shown when user enter mandatory fields and click on getDetails button--></td> </tr>
<tr>
</table> <br>
<input type="submit" value="getDetails" onclick="submitData()">
</body>
</html>
如果用户仅在表中输入前 5 行信息,我想将字段 sprint、role 和 project 列的值存储在 5 行的 3 个不同变量中的数组中。
var sprintFieldArray = [];
var roleFieldArray =[];
var projectFieldArray = [];
解决方案
您的最终目标仍不清楚,为什么要将这些全部保存到单独的数组中,这会使值彼此分离,但是您可以。
document.getElementById('form').addEventListener(
'submit',
function(e){
e.preventDefault();
var sprintFieldArray = [];
var roleFieldArray = [];
var projectFieldArray = [];
var sprints = this.getElementsByClassName('sprint');
var roles = this.getElementsByClassName('role');
var projects = this.getElementsByClassName('project');
for (i = 0; i < sprints.length; i++) {
var e = sprints[i];
sprintFieldArray.push(e.options[e.selectedIndex].value)
}
for (i = 0; i < roles.length; i++) {
var e = roles[i];
roleFieldArray.push(e.value);
}
for (i = 0; i < projects.length; i++) {
var e = projects[i];
projectFieldArray.push(e.options[e.selectedIndex].value)
}
console.log('sprintFieldArray', sprintFieldArray);
console.log('roleFieldArray', roleFieldArray);
console.log('projectFieldArray', projectFieldArray);
}
);
<form id="form">
<section>
<input type="text" class="role">
<select class="sprint">
<option value=""></option>
<option value="121.1">121.1</option>
<option value="121.2">121.2</option>
<option value="121.3">121.3</option>
<option value="122.1">122.1</option>
<option value="122.2">122.2</option>
</select>
<select class="project" >
<option value=""></option>
<option value="ProA">ProA</option>
<option value="ProB">ProB</option>
<option value="ProC">ProC</option>
<option value="ProD">ProD</option>
</select>
</section>
<section>
<input type="text" class="role">
<select class="sprint" >
<option value=""></option>
<option value="121.1">121.1</option>
<option value="121.2">121.2</option>
<option value="121.3">121.3</option>
<option value="122.1">122.1</option>
<option value="122.2">122.2</option>
</select>
<select class="project" >
<option value=""></option>
<option value="ProA">ProA</option>
<option value="ProB">ProB</option>
<option value="ProC">ProC</option>
<option value="ProD">ProD</option>
</select>
</section>
<button type="submit">Submit</button>
</form>
推荐阅读
- mongodb - 无法验证部署在 kubernetes 中的 Mongodb
- git - 运行 git submodule add 命令时获取“请确保 .gitmodules 文件在工作树中”
- java - Selenium Java Provar - 为什么我的动作 moveToElement 不执行
- flutter - Flutter (web) - 如何重新加载 Flutter PWA
- node.js - 使用快速会话丢失会话数据
- javascript - 无法在 JQuery 中禁用动画
- .net - HTTP/REST Web API 是否应该始终异步?
- flutter - 从 TextWidget 中获取文本
- azure-iot-hub - 如何查询 Azure 数字孪生的内置 IoT-Hub?
- wso2 - 如何配置 WSO2 身份服务器以避免单点故障?