sortable实现拖拽功能
使用sortable这个强力插件就很容易实现拖拽功能,它是目前比较牛逼的拖拽插件,无需jquery,就可以全面支持pc和移动,参考以下github文档就有很详细的说明,也给了很多
demo,插件就用我给你的那个就可以,不用额外添加其他库
GitHub:https://github.com/RubaXa/Sortable
以下的simple demo是我自己写的,就这么几行简单代码就完事了
simple demo:
html code:
<input type="hidden" value="" name="template_ending_order" id="template_ending_order">
<ul class="list-group" id="sort-ending-list">
<li class="list-group-item" draggable="false">致谢</li>
<li class="list-group-item" draggable="false">结论</li>
<li class="list-group-item">参考文献</li>
</ul>
<submit id="form-save">保存</submit)
js code:
$(document).ready(function(){
var ulElement = document.getElementById('sort-ending-list');
if (ulElement != null) {
var sortable = Sortable.create(ulElement, {
ghostClass: "sort-ghost"
});
}
$("#form-save").submit(function() {
setEndingOrder("#template_ending_order")
});
});
通过这个函数,将你的拖动结果拼接成一个字符串,比如:"结论;参考文献;致谢",你这个地方可以选择id作为拼接结果,比如“1;2;3”
function setEndingOrder(endingOrderId){
var ulElement = document.getElementById('sort-ending-list');
var liElements = ulElement.children;
var value = "";
for (var i=0; i<liElements.length; ++i) {
if (i < liElements.length -1)
value += liElements[i].innerHTML + ';';
else
value += liElements[i].innerHTML;
}
var inputElement = document.getElementById(endingOrderId);
inputElement.value = value;
}
class Template < ActiveRecord::Base
ENDING_PARTS =
[
Setting.templates.ending_order_conclusion,
Setting.templates.ending_order_reference,
Setting.templates.ending_order_resume
]
validates :chapter_count, :presence => true, :inclusion => { :in => 1..9 }
validates :conclusion, :presence => true, :inclusion => { :in => [0,1] }
validates :achievement, :presence => true, :inclusion => { :in => [0,1] }
validates :introduction, :presence => true, :inclusion => { :in => [0,1] }
# Conditional Validation not Working
validates :ending_order, :presence => true, :if => :valid_ending_order?
def valid_ending_order?
cur_parts = self.ending_order.split(';')
cur_parts.each do |part|
if ENDING_PARTS.include?(part) == false
return false;
end
end
return true;
end
end
def update
@thesis = Thesis.find(params[:thesis_id])
@template = @thesis.templateif @template.update(template_params)
。。。。。。
else
render :edit
end
else
render :edit
end
end
private
def template_params
params.require(:template).permit(: :resume, :ending_order, :introduction)
end
def structure_params
params.require(:template).permit(:structure_id)
end
sortable实现拖拽功能的更多相关文章
- vuejs2.0使用Sortable.js实现的拖拽功能
简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jquery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组.但 ...
- vue2.0使用Sortable.js实现的拖拽功能
简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jQuery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组.但 ...
- vuejs2.0使用Sortable.js实现的拖拽功能( 转)
文章目录 简介 实现效果 html主要代码 css代码 js代码 简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jquery ui中的sortable.js,只是 ...
- React Editor 应用编辑器(1) - 拖拽功能剖析
这是可视化编辑器 Gaea-Editor 的第一篇连载分析文章,希望我能在有限的篇幅讲清楚制作这个网页编辑器的动机,以及可能带来的美好使用前景(画大饼).它会具有如下几个特征: 运行在网页 文档流布局 ...
- JQuery UI的拖拽功能
JQuery UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量 ...
- html5 Sortable.js 拖拽排序源码分析
最近公司项目经常用到一个拖拽 Sortable.js插件,所以有空的时候看了 Sortable.js 源码,总共1300多行这样,写的挺完美的. 本帖属于原创,转载请出名出处. 官网http:// ...
- el-transfer增加拖拽功能
el-transfer增加拖拽排序,左右互相拖拽功能: npm i sortablejs <template> <el-transfer ref="transfer&quo ...
- RCP:拖拽功能的实现 Drag and Drop
SWT中的拖拽是使用的org.eclipse.swt.dnd. 有三个需要密切注意的类: 1.DragSource 2.DropTarget 3.Transfer DragSource封装了需要被拖拽 ...
- js实现登陆页面的拖拽功能
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>登 ...
随机推荐
- 修改linux系统的时间EDT为CST
今早看到一台机器时间对不上,本以为系统时间与网络北京时间不同步,就在终端命令执行网络时间同步 [root@localhost ~]# ntpdate time.windows.com 执行完之后,在执 ...
- mfc小工具开发之定时闹钟之---二十四小时时区和时间段
1.凌晨0:00-6:00时显示凌晨,上午6:00-12:00显示上午,中午12:00-14:00显示中午,下午14:00-显示下午,晚上18:00-24:00显示晚上 2. 早上:6-8:上午8-1 ...
- 【转】防止CListCtrl闪烁的几种方法
转载出处:http://blog.sina.com.cn/s/blog_5ee42ba30100g50j.html 1.使用SetRedraw禁止窗口重绘,操作完成后,再恢复窗口重绘 m_ctlLis ...
- JUnit小记
一.参数测试 /** * 1.更改测试运行器为RunWith(Parameterized.class) * 2.声明变量用来存放预期值与结果值 * 3.为测试类声明一个带有参数的公共构造方法,并在其中 ...
- Java Cache
Ehcache http://www.ehcache.org/ Memcached http://memcached.org/ Server http://blog.couchbase.com/mem ...
- 面试心得与总结—BAT、网易、蘑菇街 - ImportNew
1. 九种基本数据类型的大小,以及他们的封装类. 2. Switch能否用string做参数? 3. equals与==的区别. 4. Object有哪些公用方法? 5. Java的四种引用,强弱软虚 ...
- Android测试:从零开始1——简介
参考文档:https://developer.android.com/training/testing/start/index.html 测试分类 使用android studio进行测试,首先需要先 ...
- [LintCode] 两个排序数组的中位数
class Solution { public: /** * @param A: An integer array. * @param B: An integer array. * @return: ...
- coreldraw X6 cdrX6下载激活工具
coreldraw X6 cdrX6下载激活工具 百度网盘 CDRX6下载 激活教程什么的请参考 低吟浅唱 博客
- 关于修改react的启动端口
在package.json文件里面,加一个port端口号就ok了