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引导模式两种
https://www.ibm.com/developerworks/cn/linux/l-bootload.html
- Tuning 13 Using oracle blocks Efficiently
推进使用自动管理 automatic segment 1 个 Blocks = 2的幂次方倍 tablespace 像一块地 segment 像一个房子 extents 向一个装砖头的框 blocks ...
- Oracle RAC功能测试
Oracle RAC是一个集群数据库,可以实现负载均衡和故障无缝切换.如何知道RAC数据库已经实现了这些功能呢,下面就对此进行功能测试. 一. 负载均衡测试RAC数据库的负载均衡是指对数据库连接的负载 ...
- 【ARIMA】Autoregressive Integrated Moving Average Model
[理论部分] ARIMA包含两部分,自回归AR和移动平均MA: AR:Y(t)-a=b(1){Y(t-1)-a}+u(t) 其中a是y的均值, u(t)是均值为零,恒定方差的不相关随机误差项(噪声 ...
- C++三大函数(The Big Three)
本文用Markdown编辑,这里对Markdown的支持不完善,更好的阅读体验请移步:我的Markdown文本 C++三大函数: 析构函数 复制构造函数 operator= 析构函数 函数模样:~S( ...
- Django model :add a non-nullable field 'SKU' to product without a default; we can't do that
You are trying to add a non-nullable field 'SKU' to product without a default; we can't do that (the ...
- Bootstrap的下拉菜单float问题
在学习bootstrap中的下拉菜单时,遇到下面情况: <div class="dropdown"> <button class="btn btn-de ...
- 《转》架设一个BLOG需要整合多少东西?
本文转载自大CC 1 Wordpress本身需要花费功夫的地方不多,比较容易,但Themes要花不少功夫调整,有时还得改CSS.推荐几个Wordpress Themes网站: - http://the ...
- 修改yum源为阿里云的
将Centos的yum源更换为国内的阿里云源 author:headsen chen date:2018-04-28 13:33:41 1.备份 mv /etc/yum.repos.d/CentO ...
- 不固定宽度的div居中显示
对于div的居中 ,如果是有固定宽高的,可以加margin:auto;水平垂直居中,但如果是不固定宽高,又想让div居中的话,这种方式都可能不奏效,达不到想要的效果. 有两种方法:1.加display ...