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>登 ...
随机推荐
- 微信小程序1 - 扩展app.js
常规的开发过程中, 每个Page的逻辑中,要使用 util.js WapRequest.js, 需要在每个页面中书写 require('/utils/WapRequest'); 略繁琐 在app. ...
- pip 使用技巧
指定豆瓣源安装 pip install configparser -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/si ...
- python文件的编译
背景知识 pyc文件: .pyc 是一种二进制文件,是由 .py 文件经过编译后,生成一种byte code文件. .py 文件变成 .pyc 文件后,加载的速度有所提高,而且 .pyc 是一种跨平台 ...
- Vector类与Enumeration接口
Vector类用于保存一组对象,由于java不支持动态数组,Vector可以用于实现跟动态数组差不多的功能.如果要将一组对象存放在某种数据结构中,但是不能确定对象的个数时,Vector是一个不错的选择 ...
- LigerTree的使用
效果图: 页面: <div id="divs" style="width: 310px; overflow-x: hidden; overflow-y: hidde ...
- 编写高质量代码--改善python程序的建议(七)
原文发表在我的博客主页,转载请注明出处! 建议三十四:掌握字符串的基本用法 编程有两件事,一件是处理数值,另一件是处理字符串,在商业应用编程来说,处理字符串的代码超过八成,所以需要重点掌握. 首先有个 ...
- Android studio Unsupported major.minor version 52.0
从目前以及我从网上搜索到的解决方案来说,出现此问题可以从以下两个方法入手: 1. JDK的版本和class版本不一致,通常是jdk版本过低解决方法: 1)使用Java -version和javac - ...
- 2534: Uva10829L-gap字符串
2534: Uva10829L-gap字符串 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 66[Submit][Statu ...
- 【BZOJ3123】[Sdoi2013]森林 主席树+倍增LCA+启发式合并
[BZOJ3123][Sdoi2013]森林 Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整 ...
- java的poi导入excel时解析日期
if (r.getCellType()==Cell.CELL_TYPE_NUMERIC){ if(HSSFDateUtil.isCellDateFormatted(r)){ //用于转化为日期格式 D ...