使用JavaScript解析HTML表单
Parse HTML Form Using JavaScript
我正在尝试用JavaScript解析表单(而不是提交POST请求)。我有一个非常通用的表格,一个输入是球队名称,多个输入是球员姓名和号码。
<!-- INPUT FORM -->
<div id="rosters_container">
<!-- AWAY TEAM ROSTER FORM -->
<div class="team_roster" style="background-color: blue;">
<h2 class="team_roster_header">Away</h2>
<form id="away_form">
<div id="form_away_players_container">
<div class="team_name">
<label>Team Name</label>
<input type="text" placeholder="East High Wildcats"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="10" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="14" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="22" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="34" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="50" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
<button type="button" onclick="newPlayer('away')">+Player</button>
</div>
</div><!-- End form_away_players_container -->
<button type="button" class="save_players_form" onclick="captureForm('form_away_players_container')">Save</button>
</form>
</div>
<!-- HOME TEAM ROSTER FORM -->
<div class="team_roster" style="background-color: orange;">
<h2 class="team_roster_header">Home</h2>
<form id="home_form">
<div class="team_name">
<label>Team Name</label>
<input type="text" placeholder="West High Knights"></input>
</div>
<div id="form_home_players_container">
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="10" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="14" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="22" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="34" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
</div>
<div class="form_player_add">
<label>Number</label>
<input type="text" placeholder="50" size="2"></input>
<label>Name</label>
<input type="text" placeholder="John Doe" size="15"></input>
<button type="button" onclick="newPlayer('home')">+Player</button>
</div>
</div><!-- End form_home_players_container -->
<button type="button" class="save_players_form" onclick="captureForm('form_home_players_container')">Save</button>
</form>
</div>
</div>
以下是我使用JavaScript/jQuery:解析表单的尝试
var newPlayer = function(team) {
// Remove the add player button
$('#form_'+team+'_players_container').children().last().children().last().remove();
// Add a new div with form for new player
$('#form_'+team+'_players_container').append('<div class="form_player_add"><label>Number </label><input type="text" placeholder="XX" size="2"></input><label> Name </label><input type="text" placeholder="John Doe" size="15"></input><button type="button" onclick="newPlayer('''+team+''')">+Player</button></div>');
}
var captureForm = function(teamForm) {
var items = $('#'+teamForm).children();
console.log(items);
}
理想情况下,我想创建一个JSON对象,格式如下:
teams = {
'away': {
'team_name': 'Chicago Bulls',
'players' = [
{'number': 10,
'name': 'Michael Jordan'
},
{...}
]
},
'home': {
....
}
}
现在,如果我能在用户提交"提交"按钮时将teams
对象记录到控制台,我会很高兴。
试试这个:
var teams={};
teams.away={};teams.home={};
teams.away.players=[]; teams.home.players=[];
teams.away.team_name=$("#away_form .team_name input").val();
teams.home.team_name=$("#home_form .team_name input").val();
$("#away_form .form_player_add").each(function(ix,elem){
var i=$(elem).find('input');
teams.away.players.push({number:i[0].value,name:i[1].value});
});
$("#home_form .form_player_add").each(function(ix,elem){
var i=$(elem).find('input');
teams.home.players.push({number:i[0].value,name:i[1].value});
});
这不是最漂亮的代码,但它应该会成功。Serialize方法将不起作用,因为您的输入没有"name"属性。
希望这能帮助
相关文章:
- 使用 AngularJS Http Post 将表单 html 中的数据发布到服务器
- 如何使用js框架验证Laravel 4表单(html)
- 在表单html上编程php和警告javascript
- 联系表单-Html和Javascript只包含在Html(tumblr)中
- javascript表单(html网页)名称字段的验证
- Javascript多维数组表单html列表
- 单选按钮上的无提示验证被忽略,而它只适用于相同表单html中的文本字段
- 从表单html中检索数据
- 刷新页面后是否可以保留表单(html)内容数据
- 部分表单HTML未加载
- 控制器和输入表单html使用var Javascript
- 获取表单html及其值
- 如何使表单(html、jsp)中的Textfield只接受dd/mm/yyyy格式,而无需单击提交按钮
- 提交隐藏的表单HTML
- 信用卡表单html值长度
- PHP表单HTML按钮
- 简单的方式来改变输入字段的视觉顺序动态(不改变表单HTML)
- 表单HTML没有更新
- 制作一个不序列化javascript的一对多表单html
- 搜索parse.com数据表单html输入