json数据渲染表单元素出现的问题
解析页面表单元素
parseForm: function () {
var data = {};
$(this).find('input').each(function () {
switch ($(this).attr('type')) {
case 'radio':
case 'checkbox':
if ($(this).prop('checked')) {
data[$(this).attr('name')] = $(this).val();
}
break;
default:
data[$(this).attr('name')] = $(this).val();
}
});
$(this).find('select').each(function () {
data[$(this).attr('name')] = $(this).val();
});
$(this).find('textarea').each(function () {
data[$(this).attr('name')] = $(this).val();
});
return data;
}
});
json数据渲染表单元素
loadForm: function (jsonstr) {
try {
var jsondata = jsonstr == '' ? '' : $.parseJSON(jsonstr);
} catch (e) {
throw new Error('非法的json字符串~');
}
var self = this;
var form = {
input: function (name, val) {
$(self).find('input[name="' + name + '"]').val(val);
},
checkbox: function (name, val) {
$(self)
.find('input[name="' + name + '"][type="checkbox"][value="' + val + '"]')
.attr('checked', 'checked');
},
radio: function (name, val) {
$(self)
.find('input[name="' + name + '"][type="radio"][value="' + val + '"]')
.attr('checked', 'checked');
},
textarea: function (name, val) {
$(self).find('textarea[name="' + name + '"]').val(val);
},
select: function (name, val, data) {
var obj = $(self).find('select[name="' + name + '"]');
if ($.isEmptyObject(obj)) {
return false;
}
if (typeof data == 'string') {
obj.append(decodeURIComponent(data.replace(/\+/g, '%20')));
}
var selected = obj.find('option[value="' + val + '"]');
if ($.isEmptyObject(selected)) {
obj.find('option:eq(0)').attr('selected', 'selected');
} else {
selected.attr('selected', 'selected');
}
}
};
if (typeof jsondata == 'object') {
for (var key in jsondata) {
var d = jsondata[key];
if (typeof d != 'object' || d.length <= 0) {
continue;
}
if (typeof d.name == 'undefined') {
continue;
}
switch (d.type) {
case 'select':
form.select(d.name, d.value, d.data);
break;
case 'radio':
form.radio(d.name, d.value);
break;
case 'checkbox':
form.checkbox(d.name, d.value);
break;
case 'textarea':
form.textarea(d.name, d.value);
break;
default :
form.input(d.name, d.value);
}
}
}
},
php代码
$formObj = new Form();
$select_arr = ['zulinqixian', 'chanzhengxingzhi', 'pingmiantu', 'gongrefangshi', 'xiaofangpiwen', 'zhengzhaobanli', 'shifouhanpiao', 'dizeng', 'dizengzhi', 'ya', 'fu',
'mianzuqi', 'kongtiaoleixing', 'liangyiqu', 'xiyiqu', 'tingchechangdi', 'dianti',];
foreach (json_decode($ProjectObj->getContent(), true) as $k => $v) {
if ($k == 'yuanxiaofangsheshi-1') {
$formObj->addCheckboxInput('yuanxiaofangsheshi-1', $v);
} else if ($k == 'yuanxiaofangsheshi-2') {
$formObj->addCheckboxInput('yuanxiaofangsheshi-2', $v);
} else {
if(in_array($k,$select_arr)){
$formObj->addSelect($k, $v, []);
}
}
}
json数据渲染表单元素出现的问题的更多相关文章
- 在JS中将指定表单内的“具有name数据的表单元素的值”封装为Get形式的字符串
//封装post时候,表单中所有具有name数据的表单元素的值,并返回“n=1&p=a” function serialize(formid) { var arr = []; var ipts ...
- ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动
一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...
- 构造AJAX参数, 表单元素JSON相互转换
ajax提交服务器数据, 整理一下转换方法. HTML: <form id="fm" name="fm" action=""> ...
- Flask--(一对多)模型渲染表单数据
模型建立一一对多模型: 多表添加外键,建立两张表之间的关系 一表关联多表的属性,可以方便快速访问多表的数据 模板一层循环渲染一表数据,二层循环渲染多表的数据 代码展示: from flask impo ...
- 【jQuery】form表单元素序列化为json对象
序列化form表单元素为json对象: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head&g ...
- 使用CSS来渲染HTML的表单元素
效果: 实现: <!DOCTYPE html> <html> <head> <title>使用CSS来渲染HTML的表单元素</title> ...
- 第二章 Vue快速入门--13 讲解v-model实现表单元素的数据双向绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- VUE 表单元素双向绑定总结
checkbox最基本用法: <input type="checkbox" v-model="inputdata" checked/> <in ...
- 动态增加表单元素并获取元素的text和value提交
以上是效果图 需求是这样的: 专家设置好条件,然后设备检测到达到相应的条件之后,设备发出提醒给用户. 这就需要专家设置好能看懂的条件之后,然后把给专家看的,正常人能看懂的条件和发送的设备的,设备能够识 ...
随机推荐
- 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)
四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...
- 提问!同一ajax请求获取的图片路劲,在谷歌浏览器能正确展示图片,在火狐浏览器则显示路径undefined
今天的工作学习之路遇见一个奇葩的问题,作为初级攻城狮的小生实在不知如何解决,都已经壁咚度娘一整天了,都未能解决问题,实属无奈,一开始认为是浏览器兼容的问题,但左看右看,也不是,也尝试过是不是页面加载与 ...
- 实现类似MVC ViewBag类型的对象
public class ViewBag : DynamicObject { private readonly Dictionary<string,dynamic> dic=new Dic ...
- Ubuntu14.04下CUDA7.5安装与配置
一.下载: 在官网上下载cuda toolkit(所有需要安装都在里面包括驱动 toolkit Samples)下载网址: https://developer.nvidia.com/cuda-down ...
- Ubuntu部署Jupyter
前言 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特 ...
- SharePoint 切换用户的小技巧
前言 从SharePoint 2013开始,SharePoint就已经去掉了”Sign in as Different User”这个功能,也就是无法切换用户登录.当然,后来我们通过修改CONTROL ...
- vue学习笔记 计算属性(四)
计算属性就是vue实例里的computed属性,对应一个对象,里面可以放各种方法,方法的作用就是可以生成和数据变量对应的计算后的变量,跟数据相关的复杂逻辑变量,都可以使用计算属性实现,computed ...
- HTTP协议(二)
一.请求的格式: (一).请求行 (1).请求方法 1.GET 2.POST 3.PUT 4.DELETE 5.TRACE 6.OPTIONS (2).请求路径 (3).所用的协议 (二).请求头信息 ...
- java日期转换
在java开发过程中,时间的转换时必须掌握的=========下面把时间转换做个总结,有可能不是很全面 时间格式只有两种 yyyy-MM-DD yyyy/MM/DD 时间的类型:字符串类型.sql类型 ...
- Java web的几种异常处理 (转)
一.在servlet容器中处理异常 以下两种方式: 1. 在web.xml定义异常处理 如果没有在web的应用中作异常处理,那么异常就会抛给Servlet容器,应该说此时Servlet容器是处理异常 ...