我正在尝试编写一个 Web 表单,该表单将具有基于用户在表单早期输入的可选选项。
我被卡住的地方是;
- 我有一个表房间类型,它只是带有输入标签(类型=文本)的 td 标签。这些是用户填写的,所以我不知道它们是什么..
- 我有一个按钮可以向该表添加额外的行(Jquery 添加另一个 td 标记和输入标记)
- 用户根据需要添加尽可能多的行
表格的下一部分是填写房间,并为每个房间选择类型。表格布局是相同的(除了有两列,而不是一列),额外的行是通过另一个带有 Jquery 的按钮添加的。
我希望能够做的是添加新行以在表格中有两列。一个输入文本字段,另一个是带有上表选项的选择框。
我已经设法使这项工作达到了一定程度。但由于用户可能会从原始(房间类型)表中返回编辑选项,因此我需要选择框根据原始表当前显示的内容调整它们的值。
我可以通过每次访问一个输入字段时清空并重新填充我的选择框来完成这项工作(使用 OnBlur,这可能不是最有效的方法),但是因为它从 bxes 中删除条目,然后重新-填充,任何已填充的选择框都已重置。我只想重置无效选项(即原始表中不存在的值)。
我已经看/玩了很长时间了,但是我的编程能力只是我从这里和谷歌那里学到的,而之前在一些非常小的事情上搞砸了......
我的 HTML 代码(好吧,我的代码的一部分,我已经删除了所有不相关的代码以保持简单)在这里:
<div id="rm_types_info">
<table id="room_types_table">
<tr>
<td><input type="text" class="room_types" onblur="edit_rooms_select();" /></td>
</tr>
</table>
<button type="button" onclick="rmtypes('room_types_table');">Add Another Room Type</button>
</div>
<div id="rooms_info">
<table id="rooms_table">
<tr>
<th>Room Number</th>
<th>Room Type</th>
</tr>
<tr>
<td><input type="text" /></td>
<td>
<select class="room_type_select">
<option value="Please Choose">Please Choose</option>
</select>
</td>
</tr>
</table>
<button type="button" onclick="rooms('rooms_table');">Add Another Room</button>
</div>
我的 JQuery 是;
<script>
var userscounter=2
var rmtypescounter=1
var roomscounter=2
function users(ID){
document.getElementById(ID).insertRow(userscounter).innerHTML = '<td><input type="text" /></td><td><input type="text" /></td>';
userscounter++;
};
function rmtypes(ID){
document.getElementById(ID).insertRow(rmtypescounter).innerHTML = '<td><input type="text" class="room_types" onblur="edit_rooms_select();" /></td>';
rmtypescounter++;
}
function rooms(ID){
document.getElementById(ID).insertRow(roomscounter).innerHTML = '<td><input type="text" /></td><select class="room_type_select"><option value="Please Choose">Please Choose</option></select></td>';
roomscounter++;
};
function edit_rooms_select(){
var roomtypelist = $('.room_type_select');
roomtypelist.empty()
$('#room_types_table tr td input').each(function(){
var text = $(this).val();
roomtypelist.append('<option value='+text+'>'+text+'</option>');
});
}
</script>
我已经删除了删除重复项的 Jquery,因为它肯定无法正常工作......
我知道我可能会以完全错误的方式进行此操作,如果使用 td 标签或输入等完全错误,我很乐意更改必要的整个表单。