jquery+bootstrap实现一个拖拽式表单生成预览效果代码
代码语言:html
所属分类:表单美化
代码描述:jquery+bootstrap实现一个拖拽式表单生成预览效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/bootstrap.4.3.1.min.css"> <style> .controlName{ width: 80%; float: left; padding: 5px; border: 1px solid #ededed; margin-bottom: 20px; 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: pointer; border: 1px solid #0377ed; } .mainbackground{ } .questionnaireTitle{ text-align: center; font-size: 18px; } .questionnaireSubject{ width:100%; padding: 0px 10px; float: left; position: relative; height: 100%; overflow: auto; } .questionnaireItemHead{ width: 90%; float: left; line-height: 40px; height: 44px; margin-left: 5%; } .questionnaireItemName{ float: left; width: 60%; } .questionnaireItemGroupButton{ float: right; } .questionnaireItemGroupButton button{ margin-left: 5px; } .questionnaireItemContent{ width: 90%; float: left; margin-left: 5%; margin-bottom: 20px; } .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(//repo.bfw.wiki/bfwrepo/icon/5d835147aa4b2.png)left center no-repeat; background-size: cover; 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; } .questionnaireAttribute{ display: none; width: 96%; margin: 0 2%; padding: 0 2%; float: left; position: relative; } .textRegularCustom{ display: none; } .placeLocationTop{ border-top:1px solid #22aaff; } .placeLocationBottom{ border-bottom:1px solid #22aaff; } .questionnaireItem{ width:100%; } .required{ float:left; color:#f00; } .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%; } .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%; } .priviewbtn,.getcode{ background: 000; cursor: pointer; margin: 20px; text-align: center; border: 1px solid grey; } </style> </head> <body style="height: 100%;position: fixed;width: 100%;"> <div id="app"></div> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/popper-min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/bootstrap.4.3.1.min.js"></script> <script> //-----------------------------------------初始化方法及页面加载方法------------------------------------------- function Initialization(name) { //先清除对应div中的html代码 $(name).empty(); var main = '<div class="container-fluid" style="background:#edededa1;"><div class="row">'; main += leftToolbar(); main += centerMain(); main += rightAttribute(); main += '</div></div><div class="dragControl"></div>'; main += '<div class="previewMain"></div>'; //添加基本的界面布局 $(name).append(main); $(".interval").css("height",document.body.offsetHeight+"px");//初始化高度,跟浏览器可视高度一致 } //左侧工具栏 function leftToolbar() { //<!--左侧工具栏--> var str = '<div class="col-lg-3 mainbackground">'; str += '<div class="interval">'; str += '<p class="questionnaireTitle">工具栏</p><div class="priviewbtn">预览</div><div class="getcode">获取代码</div>'; str += '<div class="row">'; //文本框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="text">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">文本框</div>'; str += '</div></div>'; //多行文本框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="multiple">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">多行文本框</div>'; str += '</div></div>'; //时间框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="date">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">时间框</div>'; str += '</div></div>'; //单选框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="radio">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">单选框</div>'; str += '</div></div>'; //复选框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="checkbox">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">复选框</div>'; str += '</div></div>'; //下拉框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="dropdown">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">下拉框</div>'; str += '</div></div>'; //文本下拉框 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="textdropdown">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">文本下拉框</div>'; str += '</div></div>'; //图片上传 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="img">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">图片上传</div>'; str += '</div></div>'; //文件上传 str += '<div class="col-lg-6">'; str += '<div class="controlName" data-type="file">'; //str += '<div class="controlImgName"><img src="../images/icon_ps.png" alt="图片"></div>'; str += '<div class="controlRealName">文件上传</div>'; str += '</div></div>'; str += '</div></div></div>'; return str; } //中部控件主体 function centerMain() { //<!--中间内容区域--> var str = '<div class="col-lg-6 mainbackground ">'; str += '<div class="interval centerMain">'; str += '<p class="questionnaireTitle tableTitle">新建调查问卷</p>'; //<!--主体部分--> str += '<div class="questionnaireSubject">'; str += '<form class="questionnaireSubjectForm"></form>'; str += '</div></div></div>'; return str; } //右侧属性栏 function rightAttribute() { //<!--右侧属性框--> var str = '<div class="col-lg-3 mainbackground">'; str += '<div class="interval">'; str += '<p class="questionnaireTitle">属性栏</p>'; //<!--文本属性--> str += '<div class="questionnaireAttribute" data-type="text"> <div class="form-group"> <label>控件名称</label> <input type="text" class="form-control controlAttributeName"> </div> <div class="form-group"> <label>默认值</label> <input type="text" class="form-control textDetailsName"> </div> <div class="form-group"> <label>限制</label> <select class="form-control limitSelect"> <option value="">无</option> <option value="'+numberRegExp+'">数字</option> <option value="'+ letterRegExp +'">字母</option> <option value="'+chineseRegExp+'">中文</option> <option value="'+emailRegExp+'">邮箱</option> <option value="'+mobileRegExp+'">手机号</option> <option value="'+idRegExp+'">身份证</option> <option value="auto">自定义</option> </select> <input type="text" class="form-control textRegularCustom" name="" placeholder="请输入正则表达式"> </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> .........完整代码请登录后点击上方下载按钮下载查看
网友评论0