在jsp页面表单回填方法
1.靠controller页面跳转,并使用jstl回填.
2.使用ajax方式返回json,再逐个单独回填.
相对这两种方法都比较麻烦,既然表单能序列化,那能不能用name反序列话呢,答案是可以的.
表单序列化为json方法,很简单只需传表单id,例如$("#from")即可
//序列化表单 function getSearchFormDataJson($from) { var data = $from.serializeObject(); return JSON.stringify(data); } 表单反序列化.传递表单id,和json数据串,即可自动回填,checkbox有些毛病.我也是在网上找的! //表单自动回填的方法 var fillForm = function($form, json) { var jsonObj = json; if (typeof json === 'string') { jsonObj = $.parseJSON(json); } for ( var key in jsonObj) { // 遍历json字符串 var objtype = jsonObjType(jsonObj[key]); // 获取值类型 if (objtype === "array") { // 如果是数组,一般都是数据库中多对多关系 var obj1 = jsonObj[key]; for ( var arraykey in obj1) { // alert(arraykey + jsonObj[arraykey]); var arrayobj = obj1[arraykey]; for ( var smallkey in arrayobj) { setCkb(key, arrayobj[smallkey]); break; } } } else if (objtype === "object") { // 如果是对象,啥都不错,大多数情况下,会有 xxxId // 这样的字段作为外键表的id } else if (objtype === "string") { // 如果是字符串 var str = jsonObj[key]; var date = new Date(str); if (date.getDay()) { // 这种判断日期是本人懒,不想写代码了,大家慎用。 $("[name=" + key + "]", $form).val(str); continue; } var tagobjs = $("[name=" + key + "]", $form); if ($(tagobjs[0]).attr("type") == "radio") {// 如果是radio控件 $.each(tagobjs, function(keyobj, value) { if ($(value).attr("val") == jsonObj[key]) { value.checked = true; } }); continue; } $("[name=" + key + "]", $form).val(jsonObj[key]); } else { // 其他的直接赋值 $("[name=" + key + "]", $form).val(jsonObj[key]); } } } var setCkb = function(name, value) { // alert(name + " " + value); // $("[name=" + name + "][value=" + value + "]").attr("checked", "checked"); // 不知为何找不到具体标签; $("[name=" + name + "][val=" + value + "]").attr("checked", "checked"); } var fillckb = function(name, json) { var jsonObj = json; if (typeof json === 'string') { jsonObj = $.parseJSON(json); } var str = jsonObj[name]; if (typeof str === "string") { var array = str.split(","); $.each(array, function(key, value) { setCkb(name, value); }); } } var jsonObjType = function(obj) { if (typeof obj === "object") { var teststr = JSON.stringify(obj); if (teststr[0] == '{' && teststr[teststr.length - 1] == '}') return "class"; if (teststr[0] == '[' && teststr[teststr.length - 1] == ']') return "array"; } return typeof obj; } //表单回填END