jquey+bootstrap实现表单拖拽并设置属性生成表单json数据代码

代码语言:html

所属分类:表单美化

代码描述:jquey+bootstrap实现表单拖拽并设置属性生成表单json数据代码

代码标签: 拖拽 设置 属性 生成 表单 json 数据

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
    <title>拖拽表单</title>
    <!-- Required meta tags -->
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery.1.11.min.js"></script>
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2716841_5q133u7t0gp.css" />

    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/bootstrap.3.3.4.css">

    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/bootstrap-3.3.4.js"></script>
    <style>
        .controlRealName i {
    	margin-right: 3px;
    }
    .controlName {
    	width: 48%;
    	float: left;
    	padding: 5px;
    	border: 1px solid #ededed;
    	margin: 0 1% 20px 1%;
    	border-radius: 2px;
    	color: #777;
    }
    .interval {
    	width: 96%;
    	margin: 0 2%;
    	padding: 0 2%;
    	background: #ffffff;
    	float: left;
    	/* overflow-y: auto;
        overflow-x: hidden; */
    }
    .controlImgName {
    	width: 20px;
    	float: left;
    	height: 20px;
    	overflow: hidden;
    	position: relative;
    }
    .controlImgName img {
    	width: 100%;
    	position: absolute;
    	top: 0;
    	left: 0;
    }
    .controlRealName {
    	float: left;
    	font-size: 14px;
    }
    .controlName:hover {
    	color: #0377ed;
    	cursor: move;
    	border: 1px solid #0377ed;
    }
    .LdgFormTitle {
    	text-align: center;
    	font-size: 18px;
    }
    .LdgFormSubject {
    	width: 100%;
    	padding: 0px 10px;
    	float: left;
    	position: relative;
    	height: 100%;
    	overflow: auto;
    	background-color: #fff;
    }
    .LdgFormItemHead {
    	padding: 7px 6px;
    	width: 100%;
    }
    .LdgFormItemContent .checkbox,
    .LdgFormItemContent .checkbox-inline,
    .LdgFormItemContent .radio,
    .LdgFormItemContent .radio-inline {
    	padding-top: 7px;
    	margin-top: 0;
    	margin-bottom: 0;
    }
    .LdgFormItemName {
    	float: left;
    }
    .LdgFormItemGroupButton {
    	position: absolute;
    	right: 0;
    	bottom: 0;
    }
    .LdgFormItemGroupButton i {
    	margin-left: 2px;
    	background-color: #22aaff;
    	padding: 5px;
    	color: white;
    	cursor: pointer;
    }
    .LdgFormItemGroupButton i.controlMove {
    	cursor: move;
    }
    .LdgFormItemID {
    	background-color: #22aaff;
    	color: white;
    	padding: 2px;
    	margin-right: 5px;
    }
    .LdgFormItemContent {
    	width: 100%;
    }
    .LdgFormItemContent::before,
    .LdgFormItemContent::after {
    	display: table;
    	content: '';
    }
    .checkMargin {
    	margin-top: 7px;
    }
    .selectInputDiv {
    	display: none;
    	border: 1px solid #ccc;
    	width: 92%;
    	padding: 4px 6px;
    	box-shadow: 1px 1px 0px 0px #ccc;
    	position: absolute;
    	z-index: 10000;
    	background: #fff;
    	overflow: auto;
    }
    .selectInputDiv p {
    	margin-bottom: 0px;
    	padding: 0.5rem 0;
    }
    .selectInputDiv p:hover {
    	background: #0377ed;
    	color: #fff;
    }
    .full {
    	width: 100%;
    	float: left;
    }
    .z_photo {
    	padding: 5px;
    	border: 1px dashed #e7e6e6;
    }
    .z_file {
    	width: 120px;
    	height: 120px;
    	margin: 0 auto;
    	position: relative;
    }
    .add-img {
    	display: block;
    	width: 120px;
    	height: 120px;
    }
    .imgFile {
    	width: 100%;
    	height: 100%;
    	opacity: 0;
    	position: absolute;
    	top: 0px;
    	left: 0px;
    	z-index: 100;
    }
    .imgExplain {
    	font-size: 12px;
    	color: #888;
    	float: left;
    }
    .errerClass {
    	display: none;
    	float: left;
    	font-size: 14px;
    	color: #ff0000;
    }
    .message {
    	float: left;
    	width: 100%;
    	overflow: hidden;
    	position: relative;
    }
    .message .input {
    	width: 70%;
    	float: left;
    }
    .message .liulan {
    	width: 30%;
    	height: 38px;
    	padding: 4px 6px;
    	background: url(images/file.png) left center no-repeat;
    	text-indent: 10px;
    	cursor: pointer;
    	border: 1px solid #ccc;
    	border-radius: 3px;
    }
    .message .files {
    	position: absolute;
    	left: 0px;
    	top: 0px;
    	cursor: pointer;
    	filter: Alpha(opacity=0);
    	opacity: 0;
    	display: none;
    }
    .fileTips {
    	float: left;
    }
    .fileTips p {
    	color: #888 !important;
    	font-size: 12px !important;
    	margin: 0px !important;
    }
    .LdgFormButton {
    	border-bottom: 1px solid #e7e6e6;
    	padding: 5px;
    	margin-bottom: 5px;
    }
    .btn:focus,
    .btn:active:focus,
    .btn.active:focus,
    .btn.focus,
    .btn:active.focus,
    .btn.active.focus {
    	outline: none;
    	box-shadow: none;
    }
    
    .LdgFormAttribute,
    .LdgFormConfigs,
    .LdgFormControls {
    	width: 96%;
    	margin: 0 2%;
    	padding: 0 2%;
    	float: left;
    	position: relative;
    	overflow-y: auto;
    	overflow-x: hidden;
    }
    .textRegularCustom {
    	display: none;
    }
    .placeLocationTop {
    	border-top: 3px solid #22aaff;
    }
    .placeLocationBottom {
    	border-bottom: 3px solid #22aaff;
    }
    .LdgFormItem {
    	width: 100%;
    }
    .required {
    	float: left;
    	color: #f00;
    	margin: 0 2px;
    }
    .requiredHiddle {
    	display: none;
    }
    .previewMain {
    	position: absolute;
    	width: 800px;
    	height: 600px;
    	display: none;
    	margin: 0 auto;
    	border: 1px solid #000;
    	background: #fff;
    	top: 0;
    	left: 0;
    	right: 0;
    	bottom: 0;
    }
    .errorMain {
    	line-height: 40px;
    	height: 40px;
    	overflow: hidden;
    	color: #f00;
    	width: 100%;
    	display: none;
    }
    .hidMargin {
    	margin-bottom: 0px !important;
    }
    .z_fileImgDel {
    	position: absolute;
    	width: 100%;
    	text-align: center;
    	background: #000;
    	opacity: 0.7;
    	color: #fff;
    	bottom: 0px;
    	z-index: 101;
    }
    .messagedel {
    	position: absolute;
    	z-index: 101;
    	width: 120px;
    	height: 100%;
    	text-align: center;
    	line-height: 38px;
    	background: #000;
    	opacity: 0.5;
    	color: #fff;
    	display: none;
    	right: 30%;
    }
    .LdgFormTitle {
    	border-bottom: 1px solid #e7e6e6;
    	padding: 5px;
    	margin-bottom: 5px;
    }
    .LdgDiyForm {
    	border: 2px solid #e7e6e6;
    }
    .LdgDiyForm,
    .LdgDiyForm > div {
    	height: 100%;
    	position: relative;
    }
    .LdgDiyForm > div:nth-child(1) {
    	background-color: #fff;
    	width: 250px;
    	float: left;
    	border-right: 1px solid #e7e6e6;
    }
    .LdgDiyForm > div:nth-child(2) {
    	width: calc(100% - 254px);
    	margin-left: 250px;
    	padding: 4px;
    	position: absolute;
    }
    .LdgDiyForm > div:nth-child(3),
    .LdgDiyForm > div:nth-child(4) {
    	display: none;
    	border-left: 1px solid #e7e6e6;
    }
    
    .hasProperties.LdgDiyForm > div:nth-child(2) {
    	width: calc(100% - 504px);
    	position: absolute;
    }
    .hasProperties.LdgDiyForm > .showAttr {
    	/*div:nth-child(3)*/
    	background-color: #fff;
    	width: 250px;
    	float: right;
    	display: flex;
    	flex-direction: column;
    }
    
    .LdgFormSubjectForm .row {
    	margin: 3px auto;
    }
    .ldgPrew .LdgFormItem {
    	border: rgb(25, 178, 238) 1px dashed;
    	background-color: rgba(236, 245, 255, 0.3);
    	padding: 3px;
    	position: relative;
    }
    .ldgLeft .LdgFormItemHead,
    .ldgRight .LdgFormItemHead {
    	width: 100px;
    }
    .ldgLeft .LdgFormItem,
    .ldgRight .LdgFormItem {
    	width: 100%;
    	display: flex;
    }
    
    .ldgLeft .LdgFormItemContent {
    	float: left;
    }
    .ldgRight .LdgFormItemName {
    	float: right;
    }
    .ldgRight .required {
    	float: right;
    }
    </style>
</head>

<body style="height: 100%; position: fixed; width: 100%">
  
    <div id="app"></div>
    <script>
        //-----------------------------------------全局变量-------------------------------------------
    var mouseX //鼠标的位置
    var mouseY //鼠标的位置
    var controlHtml //被选中的控件
    var isCanBePlaced = false //是否可以放置
    var isDownControl = false //是否按下了控件
    var formLeft = 0 //form表单的坐标
    var formTop = 0
    var formRight = 0
    var formBottom = 0
    var object //中部控件
    var objectControl //中部控件点击后记录控件信息
    var objectIndex //中部控件正在操作的id
    var numberRegExp = '^[0-9]+$' //纯数字表达式
    var letterRegExp = '^[a-zA-Z]+$' //纯字母
    var chineseRegExp = '^[\u4e00-\u9fa5]{0,}$' //中文
    var emailRegExp = '^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$' //邮箱
    var mobileRegExp = '^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$' //手机号码
    var idRegExp = '^((d{18})|([0-9x]{18})|([0-9X]{18}))$' //身份证
    var ldgDefaultBtns = {
    	//默认按钮  移动和删除
    	move: { class: 'icon-yidong controlMove' },
    	delete: { class: 'icon-shanchu controlDelete' },
    }
    var contorlCache = []
    
    //-----------------------------------------初始化方法及页面加载方法-------------------------------------------
    function Initialization(Parameters) {
    	//先清除对应div中的html代码
    	let el = '.DiyForm'
    	if (Parameters['el']) {
    		el = Parameters['el']
    	}
    	$(el).empty()
    	let height = '100%'
    	if (Parameters['height']) {
    		height = Parameters['height']
    	}
    	$(el).height(height)
    	var main = '<div class="LdgDiyForm" style="background:#edededa1;">'
    	main += leftToolbar()
    	main += centerMain()
    	main += rightAttribute()
    	main += '</div><div class="dragControl"></div>'
    	main += '<div class="previewMain"></div>'
    
    	//添加基本的界面布局
    	$(el).append(main)
    
    	$('.interval').css('height', document.body.offsetHeight + 'px') //初始化高度,跟浏览器可视高度一致
    }
    function GetBtns(btns, id) {
    	let str = '<!--表单控件的功能按钮-->'
    	str += '<div class="LdgFormItemGroupButton">'
    	str += '<span class="LdgFormItemID">' + id + '</span>'
    	if (btns) {
    		for (let key in btns) {
    			str += '<i  class="iconfont ' + btns[key].class + '"></i>'
    		}
    	} else {
    		for (let key in ldgDefaultBtns) {
    			str += '<i  class="iconfont ' + ldgDefaultBtns[key].class + '"></i>'
    		}
    	}
    	str += '</div>'
    	return str
    }
    function GetRequired(required) {
    	if (required) {
    		return '<div class="required">*</div>'
    	}
    	return ''
    }
    
    function GetCheck(required, check = false) {
    	if (required || check) {
    		return '<div class="errorMain"></div>'
    	}
    	return ''
    }
    
    function getRadioByTextAreaValue(TextAreaValue, optionvalue, id) {
    	let spilts = TextAreaValue.split('\n')
    	let str = ''
    	spilts.forEach(function (item) {
    		if (item != '') {
    			let checked = ''
    			if (item == optionvalue) {
    				checked = " checked=''"
    			}
    			str += `<div class="radio"><label><input type="radio" name="${id}" value="${item}"${checked}>${item}</label></div>`
    		}
    	})
    	return str
    }
    
    function getCheckBoxByTextAreaValue(TextAreaValue, optionvalue, id) {
    	let spilts = TextAreaValue.split('\n')
    	let spiltso = optionvalue.split('\n')
    	let str = ''
    	spilts.forEach(function (item) {
    		if (item != '') {
    			let checked = ''
    			spiltso.forEach(function (item2) {
    				if (item == item2) {
    					checked = " checked=''"
    				}
    			})
    			str += `<div class="checkbox"><label><input  name="${id}" type="checkbox" value="${item}"${checked}>${item}</label></div>`
    		}
    	})
    	return str
    }
    
    function getSelectByTextAreaValue(TextAreaValue, optionvalue, id) {
    	let spilts = TextAreaValue.split('\n')
    	if (!optionvalue || optionvalue.indexOf('请选择') == 0) {
    		optionvalue = ''
    	}
    	let str = '<select name="${id}" class="form-control">'
    	spilts.forEach(function (item) {
    		let itemvalue = item
    		if (itemvalue.indexOf('请选择') == 0) {
    			itemvalue = ''
    		}
    		if (item != '') {
    			let selected = ''
    			if (itemvalue == optionvalue) {
    				selected = " selected=''"
    			}
    			str += `<option value="${itemvalue}"${selected}>${item}</option>`
    		}
    	})
    	str += '</select>'
    	return str
    }
    
    function getTextSelectByTextAreaValue(TextAreaValue, id) {
    	let spilts = TextAreaValue.split('\n')
    	let str = '<input type="text" name="${id}" class="form-control selectInput formVal"><div class="selectInputDiv" title="下拉菜单">'
    	spilts.forEach(function (item) {
    		if (item != '') {
    			str += '<p class="selectInputDivP">' + item + '</p>'
    		}
    	})
    	str += '</div>'
    	return str
    }
    let ldgFormConfig={
    	width: { name: '组件标签宽度', value: '100', type: 'number' },
    	align: { name: '标签对齐方式', value: 0, options: { 右侧对齐: 0, 顶部对齐: 1, 左侧对齐: 2 }, type: 'radio' },
    }
    let controlList = {
    	//控件英文名
    	text: {
    		name: '文本框', //控件名称
    		icon: 'icon-duohangshurukuang', //控件图标
    		datas: {
    			//控件属性
    			//对象名:{name:"属性名称",value:"默认值",type:"text(文本类型)|number(数字类型)|date(日期型)|select(下拉选择)|radio(单选框)",options(仅支持下拉和单选框):{ 选项1: "值1", 选项2: "值1",选项3:"other(如果值为other,下拉选择支持自定义输入)" }}
    			name: { name: '控件名称', value: '文本框', type: 'text' },
    			placeholder: { name: '提示语句', value: '', type: 'text' },
    			value: { name: '默认内容', value: '', type: 'text' },
    			check: { name: '校验规则', value: '', options: { 无需校验: '', 数字: numberRegExp, 字母: letterRegExp, 中文: chineseRegExp, 邮箱: emailRegExp, 手机号: mobileRegExp, 身份证: idRegExp, 自定义: 'other' }, type: 'select' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		btns: {
    			move: { class: 'icon-yidong controlMove' },
    			delete: { class: 'icon-shanchu controlDelete' },
    		},
    		getHtml: function () {
    			return '<input name="'+this.datas.id.value+'" type="text" class="form-control formVal">'
    		},
    	}, //文本框
    	multiple: {
    		name: '多行文本框',
    		icon: 'icon-danhangshurukuang',
    		datas: {
    			name: { name: '控件名称', value: '多行文本框', type: 'text' },
    			placeholder: { name: '提示语句', value: '', type: 'text' },
    			value: { name: '默认内容', value: '', type: 'textarea' },
    			height: { name: '控件高度', value: 100, type: 'number' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		getHtml: function () {
    			return '<textarea name="'+this.datas.id.value+'" class="form-control formVal" cols="30" rows="5" style="resize: none;"></textarea>'
    		},
    	}, //多行文本框
    	date: {
    		name: '时间选择框',
    		icon: 'icon-shijianxuanzeqi',
    		datas: {
    			name: { name: '控件名称', value: '时间框', type: 'text' },
    			value: { name: '默认内容', value: '', type: 'date' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		getHtml: function () {
    			return '<input name="'+this.datas.id.value+'" type="date" class="form-control formVal">'
    		},
    	}, //时间选择框
    	radio: {
    		name: '单选框',
    		icon: 'icon-danxuan',
    		datas: {
    			name: { name: '控件名称', value: '单选框', type: 'text' },
    			value: { name: '默认勾选', value: '选项一', type: 'text' },
    			options: { name: '单选框选项(一行一个选项)', value: '选项一\n选项二', type: 'textarea' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		getHtml: function () {
    			return getRadioByTextAreaValue(this.datas.options.value, this.datas.value.value, this.datas.id.value)
    		},
    	}, //单选框
    	checkbox: {
    		name: '多选框',
    		icon: 'icon-duoxuan',
    		datas: {
    			name: { name: '控件名称', value: '多选框', type: 'text' },
    			value: { name: '默认勾选', value: '多选一\n多选二', type: 'textarea' },
    			options: { name: '多选框选项(一行一个选项)', value: '多选一\n多选二\n多选三', type: 'textarea' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		getHtml: function () {
    			return getCheckBoxByTextAreaValue(this.datas.options.value, this.datas.value.value, this.datas.id.value)
    		},
    	}, //多选框
    	dropdown: {
    		name: '下拉选择框',
    		icon: 'icon-choose1',
    		datas: {
    			name: { name: '控件名称', value: '下拉选择框', type: 'text' },
    			value: { name: '默认选择', value: '请选择省份', type: 'text' },
    			options: { name: '下拉框选项(一行一个选项)', value: '请选择省份\n河南\n河北\n山东', type: 'textarea' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		getHtml: function () {
    			return getSelectByTextAreaValue(this.datas.options.value, this.datas.value.value, this.datas.id.value)
    		},
    	}, //下拉选择框
    	textdropdown: {
    		name: '文本下拉框',
    		icon: 'icon-xialaxuanze',
    		datas: {
    			name: { name: '控件名称', value: '文本下拉框', type: 'text' },
    			value: { name: '默认内容', value: '', type: 'text' },
    			placeholder: { name: '提示语句', value: '', type: 'text' },
    			options: { name: '下拉框选项(一行一个选项)', value: '操作证一级\n操作证二级\n电工操作证', type: 'textarea' },
    			required: { name: '是否必填', value: 0, options: { 必填: 0, 选填: 1 }, type: 'radio' },
    		},
    		getHtml: function () {
    			return getTextSelectByTextAreaValue(this.datas.options.value, this.datas.value.value, this.datas.id.value)
    		},
    	}, //文本下拉框
    	//img: { name: '图片上传', icon: 'icon-ic_image_upload' }, //图片上传
    	//file: { name: '文件上传', icon: 'icon-wenjianshangchuan' }, //文件上传
    }
    //左侧工具栏
    function leftToolbar() {
    	//<!--左侧工具栏-->
    	var str = '<div class="ldgFormControl">'
    	str += '<p class="LdgFormTitle">工具栏</p>'
    	str += '<div class="LdgFormControls">'
    	for (var key in controlList) {
    		str += '<div class="controlName" data-type="' + key + '">'
    		str += '<div class="controlRealName"><i  class="iconfont ' + controlList[key].icon + '"></i>' + controlList[key].name + '</div>'
    		str += '</div>'
    	}
    	str += '</div></div>'
    	return str
    }
    
    //中部控件主体
    function centerMain() {
    	//<!--中间内容区域-->
    	var str = '<div class="ldgFormDesigner">'
    	//<!--主体部分-->
    	str += '<div class="LdgFormSubject ldgPrew ldgRight">'
    	str += `<div class="LdgFormButton">
    	<button class="btn btn-danger btn-xs ldgFormClearAll"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span>清空</button>
    	<span class="pull-right">
    	<button class="btn btn-info btn-xs ldgFormImport"><span class="glyphicon glyphicon-import" aria-hidden="true"></span>导入JSON</button>
    	<button class="btn btn-info btn-xs ldgFormExport"><span class="glyphicon glyphicon-export" aria-hidden="true"></span>导出JSON</button>
    	<button class="btn btn-success btn-xs ldgFormPreview"><span class="glyphicon glyphicon-sunglasses" aria-hidden="true"></span>预览表单</button>
    	<button class="btn btn-default btn-xs ldgFormConfigShow"><span class="glyphicon glyphicon-sunglasses" aria-hidden="true"></span>表单属性</button>
    	</span>
    	</div>`
    	str += '<form class="LdgFormSubjectForm"></form>'
    	str += '</div></div>'
    	return str
    }
    
    //右侧属性栏
    function rightAttribute() {
    	//<!--右侧属性框-->
    	var str = '<div class="ldgFormConfig">'
    	str += '<p class="LdgFormTitle">表单属性  <button class="btn btn-danger btn-xs closeAttr"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span>关闭</button></p>'
    	str += '<div class="LdgFormConfigs"></div></div>'
    	str += '<div class="ldgFormProperties">'
    	str += '<p class="LdgFormTitle">组件设置  <button class="btn btn-danger btn-xs closeAttr"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span>关闭</button></p>'
    	str += '<div class="LdgFormAttribute" data-type=""></div>'
    	/*
        //<!--图片框属性-->
        str +=
            '<div class="LdgFormAttribute" data-type="img">                     <div class="form-group">                         <label>控件名称</label>                         <input type="text" class="form-control controlAttributeName">                     </div>                     <div class="form-group">                         <label>上传数量</label>                         <input type="number" class="form-control uploadNum">                     </div>                     <div class="form-group">                         <label>此题</label>                         <div class="row">                             <div class="col-lg-6">                                 <div class="form-check">                                     <label class="form-check-label">                                         <input type="radio" class="form-check-input" name="ChoiceRadio"                                             value="0" >                                         必填                                     </label>                                 </div>                             </div>                             <div class="col-lg-6">                                 <div class="form-check">                                     <label class="form-check-label">                                         <input type="radio" class="form-check-input" name="ChoiceRadio"                                             value="1">                                         选填                                     </label>                                 </div>                             </div>                         </div>                     </div>                 </div> '
        //<!--文件框属性-->
        str +=
            '<div class="LdgFormAttribute" data-type="file">                     <div class="form-group">                         <label>控件名称</label>                         <input type="text" class="form-control controlAttributeName">                     </div>                     <div class="form-group">                         <label>上传数量</label>                         <input type="number" class="form-control uploadNum">                     </div>                     <div class="form-group">                         <label>此题</label>                         <div class="row">                             <div class="col-lg-6">                                 <div class="form-check">                                     <label class="form-check-label">                                         <input type="radio" class="form-check-input" name="ChoiceRadio"                                             value="0" >                                         必填                                     </label>                                 </div>                             </div>                             <div class="col-lg-6">                                 <div class="form-check">                                     <label class="form-check-label">                                         <input type="radio" class="form-check-input" name="ChoiceRadio"                                             value="1">                                         选填                                     </label>                                 </div>                             </div>                         </div>                     </div>                 </div>'
        */
    
    	str += '</div>'
    	return str
    }
    
    //-----------------------------------------中部控件的显示方法-------------------------------------------
    
    //图片
    function getImg() {
    	//<!--具体的表单控件 图片-->
    	var str = '<div class="row"><div class="LdgFormItem" data-type="img" data-choice="true" data-num="1" >'
    	//<!--表单控件的头部-->
    	str += '<div class="LdgFormItemHead">'
    	//<!--表单控件的名称-->
    	str += '<div class="required">*</div><div class="LdgFormItemName">上传图片</div>'
    	//<!--表单控件的功能按钮-->
    	str += '<div class="LdgFormItemGroupButton">'
    	str += '<button type="button" class="btn btn-primary controlMove">移动</button>'
    	str += '<button type="button" class="btn btn-primary controlDelete">删除</button>'
    	str += '</div></div>'
    	//<!--控件-->
    	str += '<div class="LdgFormItemContent">'
    	str += '<div class="form-group hidMargin">'
    	str += '<div class="img-box full">'
    	str += '<section class="img-section">'
    	str += '<div class="z_photo upimg-div clear">'
    	str += '<section class="z_file fl">'
    	str += '<div clas.........完整代码请登录后点击上方下载按钮下载查看

网友评论0