將table數據封裝成json格式的字符串,以便傳到後臺處理。

/**
 * 獲取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();jquery


/************************************************2016-04-07更新***************************************************/json

工做時間長了,來更新下如今使用的方法this

//表單轉對象
$.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();
相關文章
相關標籤/搜索