Bootstrap 可视化布局--拖拽后弹窗进行编辑
Bootstrap 可视化布局--拖拽后弹窗进行编辑
最近后台想一个需求,使用可视化布局-中文 | en中拖拽表格后,弹窗进行编辑,保存下载后在后台生成pdf格式。
奈何各种问题不断,使用jquery-ui中的 draggable各种坑不断,哎,一言难尽,最怕这种不是自己写的,只能不断踩坑,踩着踩着就好了
最终目的效果图
原始效果是没有之后的弹窗,需要点击才会有
思路
- 思路1: 将点击的代码直接放到 拖拽结束时使用即可
- 思路2: 找到被拖拽的对象,对其进行修改即可
- 思路3: 找到点击弹窗的按钮(需要对应到指定的对象)
难点
如何找到指定的元素,每次拖拽添加都会克隆元素,若是通过元素查找便会是一个数组,很多个,这个完全不现实,因而考虑给每一个添加指定的标识。
若是考虑找到被克隆对象,目前我尝试多种方式,直接是找不到,一脸懵逼我,我也很无奈,直接两者间没有联系,尝试过event来找,依旧没有任何效果
代码看问题
html
<div class="preview">表格</div>
<div class="view">
<table class="table" contenteditable="true">
<thead>
<tr>
<th>编号</th>
<th>产品</th>
<th>交付时间</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>TB - Monthly</td>
<td>01/04/2012</td>
<td>Default</td>
</tr>
<tr class="success">
<td>1</td>
<td>TB - Monthly</td>
<td>01/04/2012</td>
<td>Approved</td>
</tr>
<tr class="error">
<td>2</td>
<td>TB - Monthly</td>
<td>02/04/2012</td>
<td>Declined</td>
</tr>
<tr class="warning">
<td>3</td>
<td>TB - Monthly</td>
<td>03/04/2012</td>
<td>Pending</td>
</tr>
<tr class="info">
<td>4</td>
<td>TB - Monthly</td>
<td>04/04/2012</td>
<td>Call in to confirm</td>
</tr>
</tbody>
</table>
</div>
</div>
js
// 拖拽的代码
$(".sidebar-nav .box").draggable({
connectToSortable: ".column",
helper: "clone",
handle: ".drag",
start: function(e,t) {
if (!startdrag) stopsave++;
startdrag = 1;
},
drag: function(e, t) {
t.helper.width(400)
},
stop: function(e) {
handleJsIds(e);
if(stopsave>0) stopsave--;
startdrag = 0;
}
});
效果图
各种思路尝试的结果,就不一一列举了,都是泪
- 使用
jquery-ui的draggable的各类属性,始终无效果,modal:ture无法弹窗,结合dialog却无法找到指定被修改对象 - 最终症结所在,便是如何找到你刚拖拽的对象身上,这样一切都好解决
开启找到指定拖拽的对象之旅
思路是有,一直不知道如何有效实现,当看到此处代码时,一切就豁然开朗
// 此处是在拖拽 stop时被调用的
function handleJsIds(e) {
handleModalIds();
handleAccordionIds();
handleCarouselIds();
handleTabsIds();
handleDialog()
}
// 这里看到给每个添加属性,就知道还是要走这条路了
function handleCarouselIds() {
var e = $(".demo #myCarousel");
var t = randomNumber();
var n = "carousel-" + t;
e.attr("id", n);
e.find(".carousel-indicators li").each(function(e, t) {
$(t).attr("data-target", "#" + n)
});
e.find(".left").attr("href", "#" + n);
e.find(".right").attr("href", "#" + n)
}
开始时,一直都在找弹出按钮,因为点击,会出现修改的modal层
重新定义一个函数
hangleDialog
// 用来触发弹窗
function handleDialog(params) {
// 找到所有的按钮
var e = $('body.edit .demo [data-target=#editorModal]')
const n = randomNumber()
e.each(function(i, t) {
// 判断是否添加了flag属性
if (!$(t).attr('flag')) {
$(t).attr('flag', n)
// 触发按钮弹窗
$(t).trigger('click')
}
})
}
总结
目前而言,这个是改动最小的,基本没有对源代码进行修改,只是单纯添加一段而已,个人十分喜欢,其他方式改动幅度过大,效果既没出来,还不敢保证是否会影响其他效果
补充
- 源代码 ,虽说原作者不允许公开,但还是让我找到了,仅供技术探讨吧layoutit
- 一个插件 通过html可以找到对应绑定的事件 visual event
Bootstrap 可视化布局--拖拽后弹窗进行编辑的更多相关文章
- jqueryui sortable拖拽后保存位置
jqueryUI sortable 可以用来进行页面拖拽布局,然而有一个小问题就是拖拽后如何保存状态. 工作中遇到了这个情况,遍把这个问题记了下来,具体思路是: 利用拖拽stop后利用 var a ...
- OpenLayer3调用天地图,拖拽后,地图消失的问题[已解决]
拖拽后,地图直接消失了,而且右上角的坐标变成了NaN,NaN 后来经过测试发现,原来是自己封装有问题,坐标点一定要用parseFloat()转换下,但不清楚为什么页面刚开始加载的时候没有问题,总之能解 ...
- twaver拓扑图拖拽后保存json数据
功能描述:拓扑图.对节点进行拖拽,序列化获取拓扑图信息,保存到本地localStorage,刷新页面,执行反序列化,从本地获取之前保存的数据,展现之前拖拽后的拓扑 拓展:此处存储用的是web本地存储l ...
- iOS-UIWebView去掉滚动条和黑色背景即拖拽后的上下阴影
iOS UIWebView去掉滚动条和黑色背景即拖拽后的上下阴影 隐藏滚动条和上下滚动时出边界的后面的黑色的背景 webView.backgroundColor=[UIColor clearColor ...
- 基于svg.js实现对图形的拖拽、选择和编辑操作
本文主要记录如何使用 svg.js 实现对图形的拖拽,选择,图像渲染及各类形状的绘制操作. 1.关于SVG SVG 是可缩放的矢量图形,使用XML格式定义图像,可以生成对应的DOM节点,便于对单个图形 ...
- 基于jquery-ui及bootstrap的可拖拽模态框
可直接使用代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
- 对于bootstrap可视化布局设计可以参考2017.6.2
http://www.layoutit.cn/v3/index.html 可视化布局链接,拖好控件自动生成代码非常方便 http://www.jq22.com/jquery-info14044 这 ...
- C# 图片缩放,拖拽后保存成图片的功能
窗体界面部分如下: 鼠标的缩放功能需要手动在 OpertaionImg.Designer.cs 文件里面添加一句代码,具体代码如下: //picturePhoto显示图片的控件 this.pictur ...
- [前端]分享一个Bootstrap可视化布局的网站
如果你像我一样:是个前端渣,能看懂css和html,略懂Bootstarp,懒! 当你每次都想独立完成一个web页面而不知道从哪里下手的时候,那么下面的这个网站,就是你所以需要的! http://ww ...
随机推荐
- pandas--对axis=0,axis=1的理解
Stackoverflow.com是程序员的好去处,本公众号将以pandas为主题,开始一个系列,争取做到每周一篇,翻译并帮助pandas学习者一起理解一些有代表性的案例.今天的主题就是Pandas与 ...
- USB Transfer and Packet Sizes
https://msdn.microsoft.com/en-us/library/ff538112.aspx http://blog.csdn.net/chenyujing1234/article/d ...
- 【转】安装Vue.js的方法
安装vue.js的方法 一.简介 Vue.js 是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量 ...
- 20145329《Java程序设计》第六周学习总结
教材学习内容总结 第十章 InputSream与OutputStream Java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutputStr ...
- 聊一聊HTML <!DOCTYPE> 标签
一般一个基本html页面的结构,如下代码所示: <html> <head> <title>我是基本的页面结构</title> </head> ...
- 【前端】Vue.js经典开源项目汇总
Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...
- Linq to SQL - 撤销所有未提交的改动
在某些情况下我们需要撤销/丢弃所有未提交的改动,包括Update, Delete和Insert.context中GetChangeSet()方法可以返回当前所有未提交的改动,而我们的目标是清空Chan ...
- Material Design学习之 Camera
转载请注明出处:王亟亟的大牛之路 年后第一篇,自从来了某司产量骤减,这里批评下自己,这一篇的素材来源于老牌Material Design控件写手afollestad的 https://github.c ...
- scrapy之手机app抓包爬虫
手机App抓包爬虫 1. items.py class DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照片的名字 imagesUrls ...
- SQL Server-深入剖析统计信息
转自: http://www.cnblogs.com/zhijianliutang/p/4190669.html 概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化 ...


