javascript表单域与json数据间的交互


包括对象中有集合属性、对象中引用其他对象属性:

复制代码 代码如下:

/**
**json对象数据设置到表单域中
*/
function jsonObjectToForm(form, jsonObject){
for(i = 0, max = form.elements.length; i < max; i++) {
e = form.elements[i];
eName = e.name;
if(eName.indexOf('.') > 0){
dotIndex = eName.indexOf('.');
parentName = eName.substring(0, dotIndex);
childName = eName.substring(dotIndex+1);
//迭代判断eName,组装成json数据结构
eValue = iterValueFromJsonObject(jsonObject, parentName, childName);
}else{
eValue = jsonObject[eName];
}
if(eValue && eValue != "undefined" && eValue != "null"){
switch(e.type){
case 'checkbox':
case 'radio':
if(e.value == eValue){
e.checked = true;
}
break;
case 'hidden':
case 'password':
case 'textarea':
case 'text':
e.value = eValue;
break;
case 'select-one':
case 'select-multiple':
for(j = 0; j < e.options.length; j++){
op = e.options[j];
//alert("eName : " + eName + "; op value : " + op.value + "; eValue : " + eValue);
if(op.value == eValue){
op.selected = true;
}
}
break;
case 'button':
case 'file':
case 'image':
case 'reset':
case 'submit':
default:
}
}
}
}

/**
* json数组读写有两种方式
* 1: a.bs[0].id
* 2: a["bs"][0]["id"]
* 把表单转换成json数据格式
*/
function formToJsonObject(form){
var jsonObject = {};
for(i = 0, max = form.elements.length; i < max; i++) {
e = form.elements[i];
em = new Array();
if(e.type == 'select-multiple'){
for(j = 0; j < e.options.length; j++){
op = e.options[j];
if(op.selected){
em[em.length] = op.value;
}
}
}
switch(e.type){
case 'checkbox':
case 'radio':
if (!e.checked) { break; }
case 'hidden':
case 'password':
case 'select-one':
case 'select-multiple':
case 'textarea':
case 'text':
eName = e.name;
if(e.type == 'select-multiple'){
eValue = em;
}else{
eValue = e.value.replace(new RegExp('(["\\\\])', 'g'), '\\$1');
}
//判断是否是对象类型数据
if(eName.indexOf('.') > 0){
dotIndex = eName.indexOf('.');
parentName = eName.substring(0, dotIndex);
childName = eName.substring(dotIndex+1);
//迭代判断eName,组装成json数据结构
iterJsonObject(jsonObject, parentName, childName, eValue);
}else{
jsonObject[eName] = eValue;
}
break;
case 'button':
case 'file':
case 'image':
case 'reset':
case 'submit':
default:
}
}
return jsonObject;
}

/**
* 把表单元素迭代转换成json数据
*/
function iterJsonObject(jsonObject, parentName, childName, eValue){
//pArrayIndex用于判断元素是否是数组标示
pArrayIndex = parentName.indexOf('[');
//判断是否集合数据,不是则只是对象属性
if(pArrayIndex < 0){
var child = jsonObject[parentName];
if(!child){
jsonObject[parentName] = {};
}
dotIndex = childName.indexOf('.');
if(dotIndex > 0){
iterJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex+1), eValue);
}else{
jsonObject[parentName][childName] = eValue;
}
}else{
pArray = jsonObject[parentName.substring(0, pArrayIndex)];
//若不存在js数组,则初始化一个数组类型
if(!pArray){
jsonObject[parentName.substring(0, pArrayIndex)] = new Array();
}
//取得集合下标,并判断对应下标是否存在js对象
arrayIndex = parentName.substring(pArrayIndex+1, parentName.length-1);
var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
if(!c){
jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex] = {};
}
dotIndex = childName.indexOf('.');
if(dotIndex > 0){
iterJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex+1), eValue);
}else{
jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName] = eValue;
}
}
}

/**
* 迭代json数据对象设置到表单域中
*/
function iterValueFromJsonObject(jsonObject, parentName, childName){
//pArrayIndex用于判断元素是否是数组标示
pArrayIndex = parentName.indexOf('[');
//判断是否集合数据,不是则只是对象属性
if(pArrayIndex < 0){
dotIndex = childName.indexOf('.');
if(dotIndex > 0){
return iterValueFromJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex+1));
}else{
return jsonObject[parentName][childName]
}
}else{
pArray = jsonObject[parentName.substring(0, pArrayIndex)];
//取得集合下标,并判断对应下标是否存在js对象
arrayIndex = parentName.substring(pArrayIndex+1, parentName.length-1);
var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
dotIndex = childName.indexOf('.');
if(dotIndex > 0){
return iterValueFromJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex+1));
}else{
return jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName]
}
}
}



相关阅读:
用PHP 快速生成 Flash 动画的方法
屏蔽F1~F12的快捷键的js函数
VBS教程:方法-DriveExists 方法
SQL Server 2008 升级Reporting Services
Jsp&Servelet 学习笔记-对一个Servlet创建多个Mapping
Oracle 使用序列创建自增字段
SQL Server数据库对上亿表的操作经验总结
防范四种级别攻击确保Linux服务器安全
用MySQL内建复制功能来优化可用性
线程性能:Visual Studio 2010 中的资源争用并发分析
Windows Server core的便捷操作和远程管理
教你用压缩技术给SQL Server备份文件瘦身
VS2005 水晶报表在时部署时遇到的问题
用CSS的float和clear属性进行三栏网页布局
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 收费站2008年上半年工作总结 为什么叫九九重阳节 2016小学生节能环保的调查报告 杀人犯 “金豆花开”救“苍龙” 幼儿英语教育心得体会 大学迎新晚会活动策划书 学校副校长“三严三实”民主生活会对照检查材料 我愿变成一匹马作文550字 调整状态作文300字 小学综合实践活动目标在各年段具体实施的探究》课题研究报告 慈母周年祭 2015年上半年食品安全工作总结及下半年工作计划 最伤感的句子说说心情短语 2013父亲节是几号 美丽的荷花作文150字 这就是努力,现实需要努力 档案接收函 纸150字 重拾母爱700字 爱是这辈子的坟 海的模样作文700字 肝肠寸断的伤感句子 物流实习报告_实习报告 第一次做课件 钗头凤*相思 2015年社区党委工作计划 【小学作文】爱的路 关爱动物就是关爱自己250字 2014最真挚的结婚贺卡祝福语 你何时才能过不看时间的生活? 梦已成迷 小学五年级作文600字:妈妈,来看看我吧转载 小手奇遇作文700字 花开花落,梦在雨季作文1000字 小学四年级作文350字:奶奶不开心 林语堂上课请学生吃长生果 月光的断想700字 在全县乡镇部门负责人监督法培训会上的主持讲话 正能量心情句子 毕业生优秀自我鉴定 村民委员会选举工作总结 描写母亲微笑的句子 抹不去的回忆300字 党委书记在首次团代会上的讲话(XX段) 勿忘国耻,振兴中华——《圆明园的毁灭》有感250字 淘气的书包作文350字 你是我的好朋友作文500字 计算机实习报告范文3000字 最新高中入团申请书格式范文精编

Copyright © 2016 phpStudy |