根据数据生成表单

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>根据数据生成表单</title>

<script>
//定义一个数组承接里面的对象内容
//提取数组中的元素(这个元素是对象)
//用元素对象type属性判断这个对象是什么类型的标签
//再有对象拿到属性值给标签附上属性

//老套路
window.onload = function() {
var arr = [{
label: "用户名",
name: "username",
type: "text"
}, {
label: "密码",
name: "password",
type: "password"
}, {
label: "性别",
name: "gender",
type: "select",
value: [‘男‘, ‘女‘]
}, {
label: ‘是否约么‘,
name: ‘arrange‘,
type: ‘radio‘,
value: [‘约‘, ‘不约‘]
}, {
label: "爱好",
name: "hobby",
type: "checkbox",
value: [‘篮球‘, ‘足球‘, ‘羽毛球‘, ‘兵乓球‘, ‘爬山‘, ‘购物‘, ‘旅游‘, ‘看美女‘]
}, {
label: ‘是否已婚‘,
name: ‘married‘,
type: ‘radio‘,
value: [‘已婚‘, ‘未婚‘]
}, {
label: ‘简介‘,
name: ‘resume‘,
type: ‘textarea‘
}];
//根据数据生成表单
//目地:根据数据生成html结构
//1)生成select下拉框 ==> <label>xx</label><select><option></option></select>
//2)checkbox/radio ==> <label>xx</label><label><input type = "checkbox/radio">篮球</label>
//3)其他情况 ==><label>xx</label><input type = "text">
//4)生成多行文本框 ==><label>xx</label><textarea></textarea>

//遍历数据,根据类型不同生成不同的html结构

for (var i = 0; i < arr.length; i++) {

var p = document.createElement("p");

//生成label标签
//每个表单元素都会有一个label标签,需要公共生成的不用放在判断条件执行体里面
var label = document.createElement("label");
//label包裹的内容
label.innerHTML = arr[i].label;
//添加label的for属性
label.for = arr[i].name;
//声明变量
var input;

//先判断特殊性
switch (arr[i].type) {
//select
case ‘select‘:
input = document.createElement("select");
input.id = arr[i].name;
input.name = arr[i].name;

//生成下拉选项
for (var j = 0; j < arr[i].value.length; j++) {
var opt = document.createElement("option");
//option一定要添加value属性,这个是反馈到服务器的option内容
opt.value = arr[i].value[j];
//这个是option包裹的内容
opt.innerHTML = arr[i].value[j];
//把option放进select里面
input.appendChild(opt);
}
break;
//textarea
case ‘textarea‘:
input = document.createElement("textarea");
input.id = arr[i].name;
input.name = arr[i].name;
break;

// checkbox/radio
case ‘checkbox‘:
case ‘radio‘:
//<label>xx</label><label><input type = "checkbox/radio">篮球</label>

//生成一个span标签,用来包裹所有的
input = document.createElement("span");

//循环value值,把所有的选项的生成html结构
for (var j = 0; j < arr[i].value.length; j++) {
var item = document.createElement("label");
var checkbox = document.createElement("input");

//设置类型
checkbox.type = arr[i].type;
checkbox.name = arr[i].name;
item.appendChild(checkbox); //<label><input type = "checkbox/radio"></label>

//设置文本节点
var txt = document.createTextNode(arr[i].value[j]);
item.appendChild(txt); //<label><input type = "checkbox/radio">篮球</label>
input.appendChild(item);
}
break;
// text/password
default:

input = document.createElement("input");
input.tpye = arr[i].type;
input.id = arr[i].name;
input.name = arr[i].name;
}
//把label 和 input标签放到p里面
p.appendChild(label);
p.appendChild(input);

//把p标签放到文档body里面
document.body.appendChild(p);

}

}
</script>
</head>

<body>
<form>

</form>
</body>

</html>

时间: 2024-10-12 14:44:33

根据数据生成表单的相关文章

开源驰骋工作流CCFlow的通过导入内部数据生成表单的示例

应用背景:ccform的表单设计是自上而下的设计,就是说现有表单后有数据表,就是说在设计表单时ccform就自动创建了字段,如果该表单的表有了该字段就不创建了.但是很多程序员习惯了先创建表,然后在创建表单,也就是说在设计表单时,系统已经有该表了,要以已经有的表结构做为该表单的模版导入,就需要用到此功能. 解释:从指定的数据源中,指定的表,导入字段信息. 用途:在新建表单以前,表单已经有一个原型,或者已经有一个表,要以原来的数据表结构为模版,创建表单.比如我们要做一个人员入职流程,在实施以前,人员

使用 Zend_Form_Element 生成表单元素 --(手册)

表单由元素组成,它一般对应于 HTML 表单输入.Zend_Form_Element 封装了单个表单元素,并完成下列工作: 校验(提交的数据有效乎?) 抓取校验错误代码和消息 过滤(在校验和/或输出之前元素如何转义或规范化?) 解析(元素如何显示?) 元数据和属性(什么信息进一步修饰元素?) 基础类 Zend_Form_Element 对许多类有合理的缺省设置,但最好还是继承这个类来完成特殊意图的元素.另外,Zend Framework 带有许多标准的 XHTML 元素. 1.  插件加载器 Z

vue动态生成表单组件vue-generate-form

项目地址 简介 Vue动态生成表单组件 可以根据数据配置表单 使用的UI库是iView 在Vue里 一般要用到什么组件或数据 都得提前声明 所以要根据数据来生成表单 只能使用Vue的render函数 要做这一个组件 其实并不难 看一下Vue官方示例 再找个UI组件库 差不多就能写出来 如果对项目有兴趣 可以fork或克隆项目 自行研究 有问题或BUG欢迎提issues 文档 在线DEMO 表单组件 Input 输入框 Button 按钮 Radio 单选框 Checkbox 多选框 Icon 图

在JS中将指定表单内的“具有name数据的表单元素的值”封装为Get形式的字符串

//封装post时候,表单中所有具有name数据的表单元素的值,并返回“n=1&p=a” function serialize(formid) { var arr = []; var ipts = document.getElementById(formid).getElementsByTagName('input'); for (var i = 0; i < ipts.length; i++) { if (ipts[i].type=='text') { if (ipts[i].name)

yii2自动生成表单

视图中: 1.要use的两个文件类 use yii\helpers\Html;   use yii\widgets\ActiveForm; 2.生成表单,以添加商品为例说明.注意红线区域:上传文件需要注意的地方一级表单中有textarea文本域的使用 yii2自动生成表单

使用 Zend_Form 生成表单 --(手册)

Zend_Form 类用来聚合表单元素,显示组和子表单.它可以在这些条目中执行下列动作: 校验,包括读取错误代码和消息 值聚合,包括组装(populating)条目和从所有条目读取过滤的和未过滤的值 迭代所有条目,按它们键入的顺序或者从每个条目中读取的顺序提示来进行 解析(rendering)整个表单,通过执行定制解析的单个装饰器(decorator)或者迭代(iterating)表单中的所有条目 虽然由 Zend_Form 生成的表单可能复杂,可能最好的用法是做简单的表单,但是对于快速程序开发

Yii 2.0 ActiveForm生成表单 ,控制表单label和filed样式,filed一旦报错,前面lable颜色跟着变,看图,帮你解决

需要生成如下图的表单样式,图一: 正确代码: <?php $form = ActiveForm::begin([          'id' => 'login-form',          'options' => ['class' => 'form-horizontal'],          'fieldConfig' => [              'template' => "{label}\n<div class=\"col-

基于struts2 拦截器ResultType为chain的Action之间数据传递 ——表单页面打开优化

工作流所使用的表单页面使用freemarker设计,在发起或审批流程页面将表单作为一个iframe嵌入其中,实现如下: <iframe id="doJobframe" name="doJobframe" frameborder="0" scrolling="yes" height="100%" width="100%" style="padding: 0; margin-

MVC中接受视图传递数据(表单)的方法

1.通过Request.Form读取表单数据        2.通过FormCollection读取表单数据        3.通过对象读取表单数据 首先定义一个UserModel类: public class UserModel { public int UserID { get; set; } //用户编号 public string UserName { get; set; } //用户名 public string Password { get; set; } //密码 } 视图代码如下