iview+form-create通过json实现复杂表单布局与验证效果代码
代码语言:html
所属分类:表单美化
代码描述:iview+form-create通过json实现复杂表单布局与验证效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BFW NEW PAGE</title>
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/iview.css">
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/iview.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/form-create.iview.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/province_city_area.js"></script>
</head>
<body>
<div id="app">
<form-create v-model="fApi" :rule="rule" :option="option" @goods-name-change="change"
/>
</div>
<script type="text/javascript">
var maker = formCreate.maker;
let vm = new Vue({
el: '#app',
data() {
return {
formData: {},
rule: mock(),
fApi: {},
option: {
//显示表单重置按钮
resetBtn: true,
//表单提交事件
onSubmit: function(formData) {
alert(JSON.stringify(formData));
//按钮进入提交状态
vm.fApi.btn.loading();
//重置按钮禁用
vm.fApi.resetBtn.disabled();
//按钮进入可点击状态
// $f.btn.finish();
//创建第二个表单
$f = that.$formCreate(mock, root);
},
mounted: ()=> {
console.log(this.fApi.fields());
this.fApi.setValue({
"goods_name": "fdsfdsfd"
});
}
}
}
},
watch: {
'formData.address': {
handler: function(n) {
console.log(n);
},
deep: true
}
},
methods: {
change: function(...arg) {
console.log(arg);
}
},
mounted: function() {
console.log(this.fApi.formData());
//动态添加表单元素
//$f.append($r, 'pic');
}
});
function mock() {
return [{
type: 'hidden',
field: 'id',
value: '14'
},
{
type: "cascader",
title: "所在区域",
field: "address",
value: ['陕西省',
'西安市',
'新城区'],
props: {
//可选项的数据源,格式参照示例说明
data: province_city_area,
//选择后展示的函数,用于自定义显示格式
renderFormat: label => label.join(' / '),
//是否禁用选择器
disabled: false,
//是否支持清除
clearable: true,
//输入框占位符
placeholder: '请选择',
//次级菜单展开方式,可选值为 click 或 hover
trigger: 'click',
//当此项为 true 时,点选每级菜单选项值都会发生变化,具体见上面的示例
changeOnSelect: false,
//输入框大小,可选值为large和small或者不填
size: undefined,
//动态获取数据,数据源需标识 loading
loadData: () => {},
//是否支持搜索
filterable: false,
//当搜索列表为空时显示的内容
notFoundText: '无匹配数据',
//是否将弹层放置于 body 内,在 Tabs、带有 fixed 的 Table 列内使用时,建议添加此属性,它将不受父级样式影响,从而达到更好的效果
transfer: false,
},
validate: [],
},
{
type: "input",
title: "商品名称",
//label名称
field: "goods_name",
//字段名称
value: "",
//input值,
props: {
"type": "text",
//输入框类型,可选值为 text、password、textarea、url、email、date
"clearable": false,
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0