使用jquery迭代数组只返回最后一个对象
Iterating through array using jquery returns only last object
我是jquery新手,我认为这只是一个基本问题。'
<input type="text" name="text1" value=""></input>
<input type="text" name="text2" value=""></input>
<input type="text" name="text3" value=""></input>
<input type="text" name="text4" value=""></input>
<input type="text" name="text5" value=""></input>
<input type="submit" value="submit"></input>
<pre id="result">
</pre>
</form>`
这是我的html表单,我使用以下jquery函数来生成json对象
$.fn.serializeObject = function()
{
var o = {};
var d={};
var a = this.serializeArray();
$.each(a, function(i,n) {
o['name'] = n['name'];
o['content'] =(n['value']);
});
return o;
};
$(function() {
$('form').submit(function() {
$('#result').text(JSON.stringify($('form').serializeObject()));
return false;
});
});
运行上面的html,我得到输出{"name":"text5","content":"sdsd"}
只是最后的文本字段。我知道我错了。有人能帮我修一下吗?提前感谢
那是因为你正在覆盖对象的属性和最后的值获胜,你可以使用数组和它的push
方法。
$.fn.serializeObject = function () {
var o = [];
var a = this.serializeArray();
$.each(a, function (i, n) {
o.push({
name: n['name'],
content: n['value']
})
});
return o;
};
http://jsfiddle.net/kxM3e/使用jQuery map
方法:
$.fn.serializeObject = function () {
return this.find('input, textarea, select').map(function(){
return { name: this.name, content: this.value };
}).get();
};
相关文章:
- Foreach循环只返回最后一个值
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 获取最后一个返回值
- async.js在使用瀑布方法时返回最后一个值
- 从mysql数据库中删除项目,然后返回最后一页
- angular for循环返回最后一个值
- 获取多个元素:只返回最后一个
- 单选按钮选择总是返回最后一个值
- document.body.innerHTML只返回最后一个大小写
- 为什么来自循环的警报总是返回最后一个值,而不是每个迭代值
- 在Rails助手中使用Javascript调用验证文本字段时,如何返回最后一个有效输入
- 如何返回最后一个push()嵌入文档
- 带有绑定click事件的Javascript循环总是返回最后的结果
- 使用jquery迭代数组只返回最后一个对象
- Php mysql只返回最后一行,当我使用自动刷新
- 表单插件与多个表单|提交返回最后一个表单
- 当变量在不同的行上声明和赋值时返回最后赋值
- for 循环,包括 if else 语句仅返回最后一次迭代.怎么办?(JavaScript)
- 反应:从嵌套的 props 返回最后一个子对象
- php中的MySql查询只在json编码时返回最后的结果