首发于 前端攻略

使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。

欢迎大家star学习交流: github地址

示例




image


raw.githubusercontent.com

安装

OR

引入

注意! iview版本请>=2.9.2,否则可能存在问题

使用

$formCreate 参数

rules 表单元素规则

hidden 隐藏字段

input 输入框

`inputRule :`
`{`
`type:``"input"``,``//必填!`
`//lbel名称`
`title:``"商品名称"``,``//必填!`
`//字段名称`
`field:``"goods_name"``,``//必填!`
`//input值`
`value:``"iphone 7"``,`
`props: {`
`//输入框类型,可选值为 text、password、textarea、url、email、date`
`"type"``:` `"text"``,` `//必填!`
`//是否显示清空按钮`
`"clearable"``:``false``,`
`//设置输入框为禁用状态`
`"disabled"``:` `false``,`
`//设置输入框为只读`
`"readonly"``:` `false``,`
`//文本域默认行数,仅在 textarea 类型下有效`
`"rows"``: 4,`
`//自适应内容高度,仅在 textarea 类型下有效,可传入对象,如 { minRows: 2, maxRows: 6 }`
`"autosize"``:` `false``,`
`//将用户的输入转换为 Number 类型`
`"number"``:` `false``,`
`//自动获取焦点`
`"autofocus"``:` `false``,`
`//原生的自动完成功能,可选值为 off 和 on`
`"autocomplete"``:` `"off"``,`
`//占位文本`
`"placeholder"``:` `"请输入商品名称"``,`
`//输入框尺寸,可选值为large、small、default或者不设置`
`"size"``:` `"default"``,`
`//原生的 spellcheck 属性`
`"spellcheck"``:` `false``,`
`},`
`event:{`
`//按下回车键时触发`
`enter:(event)=>{},`
`//设置 icon 属性后,点击图标时触发`
`click:(event)=>{},`
`//数据改变时触发`
`change:(event)=>{},`
`//输入框聚焦时触发`
`focus:(event)=>{},`
`//输入框失去焦点时触发`
`blur:(event)=>{},`
`//原生的 keyup 事件`
`keyup:(event)=>{},`
`//原生的 keydown 事件`
`keydown:(event)=>{},`
`//原生的 keypress 事件`
`keypress:(event)=>{},`
`},`
`validate:[`
`{ required:` `true``, message:` `'请输入goods_name'``, trigger:` `'blur'` `},`
`],`
`}`

validate 表单验证规则,具体配置查看 : github.com/yiminghe/asy

radio 单选框

checkbox 复选框

select 选择器

switch 开关

DatePicker 日期选择器

`DatePickerRule :`
`{`
`type:` `"DatePicker"``,``//必填!`
`field:` `"section_day"``,``//必填!`
`title:` `"活动日期"``,``//必填!`
`//input值, type为daterange,datetimerange value为数组 [start_value,end_value]`
`value: [``'2018-02-20'``,` `new` `Date()],`
`props: {`
`//显示类型,可选值为 date、daterange、datetime、datetimerange、year、month`
`"type"``:` `"datetimerange"``,``//必填!`
`//展示的日期格式`
`"format"``:` `"yyyy-MM-dd HH:mm:ss"``,`
`//日期选择器出现的位置,可选值为toptop-starttop-endbottombottom-startbottom-endleftleft-startleft-endrightright-startright-end`
`"placement"``:` `"bottom-start"``,`
`//占位文本`
`"placeholder"``:``"请选择获得时间"``,`
`//是否显示底部控制栏,开启后,选择完日期,选择器不会主动关闭,需用户确认后才可关闭`
`"confirm"``:``false``,`
`//尺寸,可选值为large、small、default或者不设置`
`"size"``:``"default"``,`
`//是否禁用选择器`
`"disabled"``:``false``,`
`//是否显示清除按钮`
`"clearable"``:``true``,`
`//完全只读,开启后不会弹出选择器`
`"readonly"``:``false``,`
`//文本框是否可以输入`
`"editable"``:``false``,`
`},`
`event:{`
`//日期发生变化时触发,已经格式化后的日期,比如 2016-01-01`
`change:(value)=>{},`
`//弹出日历和关闭日历时触发 true | false`
`'open-change'``:(bool)=>{},`
`//在 confirm 模式或 clearable = true 时有效,在清空日期时触发`
`clear:(...arg)=>{},`
`},`
`validate:[],`
`}`

TimePicker 时间选择器

`TimePickerRule :`
`{`
`type:` `"TimePicker"``,``//必填!`
`field:` `"section_time"``,``//必填!`
`title:` `"活动时间"``,``//必填!`
`//input值, type为timerange value为数组 [start_value,end_value]`
`value: [],`
`props: {`
`//显示类型,可选值为 time、timerange`
`"type"``:` `"timerange"``,` `//必填!`
`//展示的时间格式`
`"format"``:` `"HH:mm:ss"``,`
`//下拉列表的时间间隔,数组的三项分别对应小时、分钟、秒。例如设置为 [1, 15] 时,分钟会显示:00、15、30、45。`
`"steps"``: [],`
`//时间选择器出现的位置,可选值为toptop-starttop-endbottombottom-startbottom-endleftleft-startleft-endrightright-startright-end`
`"placement"``:` `"bottom-start"``,`
`//占位文本`
`"placeholder"``:``"请选择获得时间"``,`
`//是否显示底部控制栏,开启后,选择完日期,选择器不会主动关闭,需用户确认后才可关闭`
`"confirm"``:``false``,`
`//尺寸,可选值为large、small、default或者不设置`
`"size"``:``"default"``,`
`//是否禁用选择器`
`"disabled"``:``false``,`
`//是否显示清除按钮`
`"clearable"``:``true``,`
`//完全只读,开启后不会弹出选择器`
`"readonly"``:``false``,`
`//文本框是否可以输入`
`"editable"``:``false``,`
`},`
`event:{`
`//时间发生变化时触发 已经格式化后的时间,比如 09:41:00`
`change:(checked)=>{},`
`//弹出浮层和关闭浮层时触发 true | false`
`'open-change'``:(bool)=>{},`
`//在清空日期时触发`
`clear:(...arg)=>{},`
`},`
`validate:[],`
`}`

InputNumber 数字输入框

ColorPicker 颜色选择器

Cascader 多级联动

Upload 上传

`UploadRule :`
`{`
`type:` `"Upload"``,``//必填!`
`field:` `"pic"``,``//必填!`
`title:` `"轮播图"``,``//必填!`
`/input值,当maxLength等与1时值为字符串,大于1时值为数组`
`value: [``'[http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg](http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg)'``,``'[http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg](http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg)'``], //input值`
`props: {`
`//上传控件的类型,可选值为 select(点击选择),drag(支持拖拽)`
`"type"``:``"select"``,` `//必填!`
`//上传文件类型,可选值为 image(图片上传),file(文件上传)`
`"uploadType"``:``"image"``,` `//必填!`
`//上传的地址`
`"action"``:` `""``,` `//必填!`
`//上传的文件字段名`
`"name"``:``""``,`
`//上传时附带的额外参数`
`"data"``:{},`
`//设置上传的请求头部`
`"headers"``: {},`
`//是否支持多选文件`
`"ultiple"``:` `true``,`
`//支持发送 cookie 凭证信息`
`"withCredentials"``:``false``,`
`//不支持`
`// "showUploadList":false, //是否显示已上传文件列表`
`// "defaultFileList":[], // 默认已上传的文件列表`
`//接受上传的文件类型`
`"accept"``:``""``,`
`//支持的文件类型,与 accept 不同的是,format 是识别文件的后缀名,accept 为 input 标签原生的 accept 属性,会在选择文件时过滤,可以两者结合使用`
`"format"``:[],`
`//文件大小限制,单位 kb`
`"maxSize"``:undefined,`
`//可上传文件数量`
`"maxLength"``:1,`
`//上传文件之前的钩子,参数为上传的文件,若返回 false 或者 Promise 则停止上传`
`"beforeUpload"``:()=>{},`
`//文件上传时的钩子,返回字段为 event, file, fileList`
`"onProgress"``:()=>{},`
`//文件上传成功时的钩子,返回字段为 response, file, fileList,若需有把文件添加到文件列表中,在函数值返回即可`
`"onSuccess"``:``function` `() {`
`return` `'[http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg](http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg)'``;`
`},` `//必填!`
`//文件上传失败时的钩子,返回字段为 error, file, fileList`
`"onError"``:(error, file, fileList)=>{},`
`//点击已上传的文件链接时的钩子,返回字段为 file, 可以通过 file.response 拿到服务端返回数据`
`"onPreview"``:()=>{},`
`//文件列表移除文件时的钩子,返回字段为 file, fileList`
`"onRemove"``:()=>{},`
`//文件格式验证失败时的钩子,返回字段为 file, fileList`
`"onFormatError"``:()=>{},`
`//文件超出指定大小限制时的钩子,返回字段为 file, fileList`
`"onExceededSize"``:()=>{},`
`//辅助操作按钮的图标 ,设置为false将不显示`
`hadleIcon:``'ionic'``,`
`//点击辅助操作按钮事件`
`onHandle:(src)=>{},`
`//是否可删除,设置为false是不显示删除按钮`
`allowRemove:``true``,`
`},`
`}`

accept 文件类型: developer.mozilla.org/e

全局配置 createOptions

`//插入节点,默认document.body`
`el:``null``,`
`//form配置`
`form:{`
`//是否开启行内表单模式`
`inline:``false``,`
`//表单域标签的位置,可选值为 left、right、top`
`labelPosition:``'right'``,`
`//表单域标签的宽度,所有的 FormItem 都会继承 Form 组件的 label-width 的值`
`labelWidth:125,`
`//是否显示校验错误信息`
`showMessage:``true``,`
`//原生的 autocomplete 属性,可选值为 off 或 on`
`autocomplete:``'off'``,`
`},`
欢迎加入全栈开发交流划水交流圈:582735936
面向划水1-3年前端人员
帮助突破划水瓶颈,提升思维能力
`//文件上传全局配置`
`upload:{`
`//上传文件之前的钩子,参数为上传的文件,若返回 false 或者 Promise 则停止上传`
`beforeUpload:()=>{},`
`//文件上传时的钩子,返回字段为 event, file, fileList`
`onProgress:(event, file, fileList)=>{},`
`//文件上传成功时的钩子,返回字段为 response, file, fileList,若需有把文件添加到文件列表中,在函数值返回即可`
`onSuccess:(response, file, fileList)=>{`
`// return 'filePath';`
`},`
`//文件上传失败时的钩子,返回字段为 error, file, fileList`
`onError:(error, file, fileList)=>{},`
`//点击已上传的文件链接时的钩子,返回字段为 file, 可以通过 file.response 拿到服务端返回数据`
`onPreview:(file)=>{},`
`//文件列表移除文件时的钩子,返回字段为 file, fileList`
`onRemove:(file, fileList)=>{},`
`//文件格式验证失败时的钩子,返回字段为 file, fileList`
`onFormatError:(file, fileList)=>{},`
`//文件超出指定大小限制时的钩子,返回字段为 file, fileList`
`onExceededSize:(file, fileList)=>{},`
`//辅助操作按钮的图标 ,设置为false将不显示`
`handleIcon:``'ios-eye-outline'``,`
`//点击辅助操作按钮事件`
`onHandle:(src)=>{},`
`//是否可删除,设置为false是不显示删除按钮`
`allowRemove:``true``,`
`},`
`//表单提交事件`
`onSubmit:(formData)=>{},`
`//提交按钮配置,设置为false时不显示按钮`
`submitBtn:{`
`//按钮类型,可选值为primary、ghost、dashed、text、info、success、warning、error或者不设置`
`type:``"primary"``,`
`//按钮大小,可选值为large、small、default或者不设置`
`size:``"large"``,`
`//按钮形状,可选值为circle或者不设置`
`shape:undefined,`
`//开启后,按钮的长度为 100%`
`long:``true``,`
`//设置button原生的type,可选值为button、submit、reset`
`htmlType:``"button"``,`
`//设置按钮为禁用状态`
`disabled:``false``,`
`//设置按钮的图标类型`
`icon:``"ios-upload"``,`
`//按钮文字提示`
`innerText:``"提交"``,`
`//设置按钮为加载中状态`
`loading:``false``,`
`}`
`}`

总结

以上所述是小编给大家介绍的使用Vue动态生成form表单的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留

代做工资流水公司南昌做流水泰安房贷收入证明费用莆田车贷银行流水 打印昆明工作收入证明多少钱邢台代做工资流水app截图珠海流水单代做福州日常消费流水办理曲靖办车贷工资流水贵阳转账流水公司厦门银行流水修改费用福州办理银行流水电子版潍坊银行流水单打印泰安转账流水查询厦门工资流水代开汕头做入职流水扬州工作收入证明办理滁州对公流水费用柳州转账银行流水公司烟台做签证流水烟台房贷收入证明查询桂林打个人工资流水大连车贷银行流水 模板台州企业对公流水开具太原入职工资流水公司蚌埠打印车贷银行流水绵阳工资银行流水代办烟台代办个人工资流水宜春做工资流水中山自存流水岳阳企业对公流水开具香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化