/**
* 获取table表格的数据项.
*/
function getTableData(tableId){
var data = "{"; //定义数据变量
$("#" + tableId).find("input, select").each(function(){//遍历表格中的input、select等标签
if($(this).attr("id")){ //如果此标签设置了id,则取出其中数据
data += "\"" + $(this).attr("id") + "\":\"" + $(this).val() + "\","; //拼接id和数据
}
});
if(data.length != 1){ //如果取出了数据,删除多余的符号
data = data.substring(0, data.length-1); //删除多余的符号','
}
data += "}"; //添加结束符
data = eval("(" + data + ")"); //将数据转换成json对象
return data; //返回数据
}
楼下有人指出可以直接通过表单序列化/元素序列化获取数据,jquery的serialize()方法即可。
此方法返回的是类似url参数格式的字符串:"a=1&b=2&c=3"。此方法既可以对整个表单form进行序列化取值,也可以通过元素来序列化
即:$("#formId").serialize();或者$("input").serialize();
/************************************************2016-04-07更新***************************************************/
工作时间长了,来更新下现在使用的方法
//表单转对象
$.fn.form2object = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (this.value) {
o[this.name] = this.value;
}
});
return o;
};
//对象转表单
$.fn.object2form = function (obj) {
for (var key in obj) {
$(this).find("input[name='" + key + "']").val(obj[key]);
$(this).find("textarea[name='" + key + "']").val(obj[key]);
$(this).find("select[name='" + key + "']").val(obj[key]);
}
};
//将数据显示到form表单
$("xxxform").object2form(data);
//从form表单获取数据
var data = $("xxxform").form2object();