我有一个由三个输入值组成的表和一个" Add"按钮。当"添加"按下按钮,输入值被"保存"进入行,并创建一个新行。一旦提交表单,我尝试做的就是以数组格式获得输入的每一行。但是,请求只获得最新的行(无论如何还没有添加)或者它根本没有获得任何内容。我做错了什么?
我的代码,供参考:
<table id="data_table" class="table table-striped table-responsive">
<thead>
<tr>
<th>Company Name</th>
<th>Years at Company</th>
<th>Months at Company</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td class="no-leftpad"><input type="text" id="new_name" class="length"></td>
<td>
<select id="new_years" class="form-control">
<option value="-">-</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10+</option>
</select>
</td>
<td>
<select id="new_months" class="form-control">
<option value="-">-</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
</select>
</td>
<td>
<input type="button" class="add" onclick="add_row();" value="Add">
</td>
</tr>
</tbody>
</table>
....
function add_row() {
var new_companyname=document.getElementById("new_name").value;
var new_years=document.getElementById("new_years").value;
var new_months=document.getElementById("new_months").value;
var table=document.getElementById("data_table");
var table_len=(table.rows.length)-1;
var row = table.insertRow(table_len).outerHTML="<tr id='row"+table_len+"'>"
+"<td id='companyname_row"+table_len+"'>"
+"<input type='text' name='company_name["+table_len+"][company_name]' value='"+new_companyname+"' disabled>"
+"</td>"
+"<td id='years_row"+table_len+"'>"
+"<input type='text' name='company_years["+table_len+"][company_years]' value='"+new_years+"' disabled>"
+"</td>"
+"<td id='months_row"+table_len+"'>"
+"<input type='text' name='company_months["+table_len+"][company_months]' value='"+new_months+"' disabled>"
+"</td>"
+"<td>"
+"<a type='button' value='Delete' class='fa fa-trash-o delete' onclick='delete_row("+table_len+")'></a></td></tr>";
document.getElementById("new_companyname").value="";
document.getElementById("new_years").value="";
document.getElementById("new_months").value="";
}
答案 0 :(得分:1)
function add_row()
中似乎有一个拼写错误:
document.getElementById("new_companyname").value="";
应该是:
document.getElementById("new_name").value="";
此外,如果您想暂时保留行,可以将其推送到函数add_row()
中的数组,如:
var companyList = [];
function add_row() {
...
companyList.push({
companyName:new_companyname,
yearsAtCompany:new_years,
monthsAtCompany:new_months
});
...
}
答案 1 :(得分:0)
多了一点,我意识到问题是什么:将输入设置为“禁用”阻止了请求获取它。通过将其切换为“只读”,我能够获得所需的效果并仍然获得阵列。
虽然这确实让我很好奇为什么请求不接受禁用的输入,如果有人想解决这个问题。