实现效果如下,在编辑表格的同时可以实现字段json内容的自动变化,点击提交可以保存到后台,页面加载的时候自动解析json并加载表格内容。该代码解析和加载功能都用前端js实现,简化了后台代码逻辑。
定义要操作的表格头:
<input readonly="readonly" class="form-control" type="text" id="scorerange" value="" name="scorerange"/>
<table id="mytable">
<tr>
<th style="width: 20%;">分数区间</th><th style="width:20%;">等级</th><th style="width:60%;">建议内容</th><th></th>
</tr>
<!--
<tr><td><input οnblur="caljson()" type="text" style="width: 50px;" >-<input type="text" style="width: 50px;" /></td>
<td><input οnblur="caljson()" type="text" style="width: 100%;" ></td>
<td><input οnblur="caljson()" id="btn1" type="button" οnclick="$(this).parent().parent().remove()" value="删除" /></td></tr>
-->
</table>
定义操作代码
function insertRowLast(newrow,s1,s2,s3,s4) {
if(newrow){
var newRow = "<tr><td><input οnblur=\"caljson()\" value=\"0\" type=\"text\" style=\"width: 50px;\" >-<input value=\"0\" type=\"text\" style=\"width: 50px;\" /></td>";
newRow+="<td><input οnblur=\"caljson()\" type=\"text\" style=\"width: 50px;\" ></td>";
newRow+="<td><input maxlength=\"24\" οnblur=\"caljson()\" type=\"text\" style=\"width: 100%;\" ></td>";
newRow+="<td><input οnblur=\"caljson()\" id=\"btn1\" type=\"button\" οnclick=\"$(this).parent().parent().remove();caljson();\" value=\"删除\" /></td></tr>";
$("#mytable tr:last").after(newRow);
}else{
var newRow = "<tr><td><input value=\""+s1+"\" οnblur=\"caljson()\" type=\"text\" style=\"width: 50px;\" >-<input value=\""+s2+"\" type=\"text\" style=\"width: 50px;\" /></td>";
newRow+="<td><input value=\""+s4+"\" οnblur=\"caljson()\" type=\"text\" style=\"width: 50px;\" ></td>";
newRow+="<td><input maxlength=\"24\" value=\""+s3+"\" οnblur=\"caljson()\" type=\"text\" style=\"width: 100%;\" ></td>";
newRow+="<td><input οnblur=\"caljson()\" id=\"btn1\" type=\"button\" οnclick=\"$(this).parent().parent().remove();caljson();\" value=\"删除\" /></td></tr>";
$("#mytable tr:last").after(newRow);
}
caljson();
}
var json="";
function caljson(){
json="{\"scorerange\":[";
var idx = 0;
var idxlen = $("#mytable").find("tr").length;
$("#mytable").find("tr").each(function () {
if(idx==0){
idx++;
return;
}
var tdArr = $(this).children();
var v1 = tdArr.eq(0).find('input').eq(0).val();
var v2 = tdArr.eq(0).find('input').eq(1).val();
var v3 = tdArr.eq(2).find('input').val();
var v4 = tdArr.eq(1).find('input').val();
json+="{\"s1\":\""+v1+"\",\"s2\":\""+v2+"\",\"content\":\""+v3+"\",\"classg\":\""+v4+"\"}";
idx++;
if(idx!=idxlen){
json+=",";
}
});
json+="]}";
$("#scorerange").val(json);
//alert($("#scorerange").val());
}
//alert(1);
//alert($("#scorerange").val());
var dataObj=eval("($!{tbscence.scorerange})");
if(dataObj && dataObj.scorerange){
//alert(dataObj.scorerange.length);
for(var i=0;i<dataObj.scorerange.length;i++){
var s1 = dataObj.scorerange[i].s1;
var s2 = dataObj.scorerange[i].s2;
var s3 = dataObj.scorerange[i].content;
var s4 = dataObj.scorerange[i].classg;
//alert(s1+" "+s2+" "+s3);
insertRowLast(false,s1,s2,s3,s4);
}
}else{
insertRowLast(true,0,0,0,0);
}