序列化表行中的输入(jQuery)
我有一个包含多行的表,其中包含表单输入(复选框、文本、下拉列表)。当我单击save时,我希望能够获得表示将在AJAX请求中使用的每个表行的JSON。每一行上都有一个id,因此我想返回如下内容:序列化表行中的输入(jQuery),jquery,json,Jquery,Json,我有一个包含多行的表,其中包含表单输入(复选框、文本、下拉列表)。当我单击save时,我希望能够获得表示将在AJAX请求中使用的每个表行的JSON。每一行上都有一个id,因此我想返回如下内容: [1: { "input_name":"input_value", "input_name":"input_value", etc...}, 2: {etc...}] 这些数字是表行的id 有什么方法可以做到这一点吗?还没有测试过,但类似的方法应该可以 var myjson = new Object()
[1: { "input_name":"input_value", "input_name":"input_value", etc...}, 2: {etc...}]
这些数字是表行的id
有什么方法可以做到这一点吗?还没有测试过,但类似的方法应该可以
var myjson = new Object();
$("#tableid > tr").each(function () {
var tablerow = $(this);
$("td input", tablerow).each(function () {
var input = $(this);
myjson[tablerow.attr("id")][input.attr("name")] = input.val();
});
});
这应该满足您的需要:
<table>
<tr id="101">
<td><input type="text" name="f1" value="" /></td>
<td><input type="checkbox" name="f2" value="v2" /></td>
<td><input type="checkbox" name="f3" value="" /></td>
<td><select name="f4">
<option>1</option>
<option>2</option>
<option>3</option>
</select></td>
</tr>
<tr id="102">
<td><input type="text" name="f1" value="" /></td>
<td><input type="checkbox" name="f2" value="v2" /></td>
<td><input type="checkbox" name="f3" value="" /></td>
<td><select name="f4">
<option>1</option>
<option>2</option>
<option>3</option>
</select></td>
</tr>
<tr id="103">
<td><input type="text" name="f1" value="" /></td>
<td><input type="checkbox" name="f2" value="v2" /></td>
<td><input type="checkbox" name="f3" value="" /></td>
<td><select name="f4">
<option>1</option>
<option>2</option>
<option>3</option>
</select></td>
</tr>
</table>
<button id="btnGo">Go</button>
<script type="text/javascript">
$('#btnGo').click(function(){
var data={};
$('table').find('tr').each(function(){
var id=$(this).attr('id');
var row={};
$(this).find('input,select,textarea').each(function(){
row[$(this).attr('name')]=$(this).val();
});
data[id]=row;
});
console.log(data);
});
</script>
1.
2.
3.
1.
2.
3.
1.
2.
3.
去
$('#btnGo')。单击(函数(){
变量数据={};
$('table').find('tr').each(function(){
var id=$(this.attr('id');
var行={};
$(this).find('input,select,textarea').each(function(){
行[$(this.attr('name')]=$(this.val();
});
数据[id]=行;
});
控制台日志(数据);
});
您需要这样格式化的具体原因是什么?非常感谢。这对我也有帮助