1. 使用sortable这个强力插件就很容易实现拖拽功能,它是目前比较牛逼的拖拽插件,无需jquery,就可以全面支持pc和移动,参考以下github文档就有很详细的说明,也给了很多
  2. demo,插件就用我给你的那个就可以,不用额外添加其他库
  3. GitHubhttps://github.com/RubaXa/Sortable
  4.  
  5. 以下的simple demo是我自己写的,就这么几行简单代码就完事了
  6. simple demo
  7. html code
  8.  
  9. <input type="hidden" value="" name="template_ending_order" id="template_ending_order">
  10. <ul class="list-group" id="sort-ending-list">
  11. <li class="list-group-item" draggable="false">致谢</li>
  12. <li class="list-group-item" draggable="false">结论</li>
  13. <li class="list-group-item">参考文献</li>
  14. </ul>
  15. <submit id="form-save">保存</submit)
  16.  
  17. js code
  18. $(document).ready(function(){
  19. var ulElement = document.getElementById('sort-ending-list');
  20. if (ulElement != null) {
  21. var sortable = Sortable.create(ulElement, {
  22. ghostClass: "sort-ghost"
  23. });
  24. }
  25. $("#form-save").submit(function() {
  26. setEndingOrder("#template_ending_order")
  27. });
  28. });
  29. 通过这个函数,将你的拖动结果拼接成一个字符串,比如:"结论;参考文献;致谢",你这个地方可以选择id作为拼接结果,比如“123
  30. function setEndingOrder(endingOrderId){
  31. var ulElement = document.getElementById('sort-ending-list');
  32. var liElements = ulElement.children;
  33. var value = "";
  34. for (var i=0; i<liElements.length; ++i) {
  35. if (i < liElements.length -1)
  36. value += liElements[i].innerHTML + ';';
  37. else
  38. value += liElements[i].innerHTML;
  39. }
  40. var inputElement = document.getElementById(endingOrderId);
  41. inputElement.value = value;
  42. }
  1. class Template < ActiveRecord::Base
  2.  
  3. ENDING_PARTS =
  4. [
  5. Setting.templates.ending_order_conclusion,
  6. Setting.templates.ending_order_reference,
  7. Setting.templates.ending_order_resume
  8. ]
  9.  
  10. validates :chapter_count, :presence => true, :inclusion => { :in => 1..9 }
  11. validates :conclusion, :presence => true, :inclusion => { :in => [0,1] }
  12. validates :achievement, :presence => true, :inclusion => { :in => [0,1] }
  13. validates :introduction, :presence => true, :inclusion => { :in => [0,1] }
  14.  
  15. # Conditional Validation not Working
  16. validates :ending_order, :presence => true, :if => :valid_ending_order?
  17.  
  18. def valid_ending_order?
  19. cur_parts = self.ending_order.split(';')
  20. cur_parts.each do |part|
  21. if ENDING_PARTS.include?(part) == false
  22. return false;
  23. end
  24. end
  25. return true;
  26. end
  27. end
  1. def update
  2. @thesis = Thesis.find(params[:thesis_id])
  3. @template = @thesis.templateif @template.update(template_params)
  4.       。。。。。。
  5. else
  6. render :edit
  7. end
  8. else
  9. render :edit
  10. end
  11. end
  12.  
  13. private
  14. def template_params
  15. params.require(:template).permit(: :resume, :ending_order, :introduction)
  16. end
  17.  
  18. def structure_params
  19. params.require(:template).permit(:structure_id)
  20. end

sortable实现拖拽功能的更多相关文章

  1. vuejs2.0使用Sortable.js实现的拖拽功能

    简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jquery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组.但 ...

  2. vue2.0使用Sortable.js实现的拖拽功能

    简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jQuery ui中的sortable.js,只是在拖拽完成后,在update的回调函数中又重新排序了存放数据的数组.但 ...

  3. vuejs2.0使用Sortable.js实现的拖拽功能( 转)

    文章目录   简介 实现效果 html主要代码 css代码 js代码 简介 在使用vue1.x之前的版本的时候,页面中的拖拽功能,我在项目中是直接用的jquery ui中的sortable.js,只是 ...

  4. React Editor 应用编辑器(1) - 拖拽功能剖析

    这是可视化编辑器 Gaea-Editor 的第一篇连载分析文章,希望我能在有限的篇幅讲清楚制作这个网页编辑器的动机,以及可能带来的美好使用前景(画大饼).它会具有如下几个特征: 运行在网页 文档流布局 ...

  5. JQuery UI的拖拽功能

    JQuery UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量 ...

  6. html5 Sortable.js 拖拽排序源码分析

    最近公司项目经常用到一个拖拽 Sortable.js插件,所以有空的时候看了 Sortable.js 源码,总共1300多行这样,写的挺完美的.   本帖属于原创,转载请出名出处. 官网http:// ...

  7. el-transfer增加拖拽功能

    el-transfer增加拖拽排序,左右互相拖拽功能: npm i sortablejs <template> <el-transfer ref="transfer&quo ...

  8. RCP:拖拽功能的实现 Drag and Drop

    SWT中的拖拽是使用的org.eclipse.swt.dnd. 有三个需要密切注意的类: 1.DragSource 2.DropTarget 3.Transfer DragSource封装了需要被拖拽 ...

  9. js实现登陆页面的拖拽功能

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>登 ...

随机推荐

  1. linux引导模式两种

    https://www.ibm.com/developerworks/cn/linux/l-bootload.html

  2. Tuning 13 Using oracle blocks Efficiently

    推进使用自动管理 automatic segment 1 个 Blocks = 2的幂次方倍 tablespace 像一块地 segment 像一个房子 extents 向一个装砖头的框 blocks ...

  3. Oracle RAC功能测试

    Oracle RAC是一个集群数据库,可以实现负载均衡和故障无缝切换.如何知道RAC数据库已经实现了这些功能呢,下面就对此进行功能测试. 一. 负载均衡测试RAC数据库的负载均衡是指对数据库连接的负载 ...

  4. 【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)是均值为零,恒定方差的不相关随机误差项(噪声 ...

  5. C++三大函数(The Big Three)

    本文用Markdown编辑,这里对Markdown的支持不完善,更好的阅读体验请移步:我的Markdown文本 C++三大函数: 析构函数 复制构造函数 operator= 析构函数 函数模样:~S( ...

  6. 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 ...

  7. Bootstrap的下拉菜单float问题

    在学习bootstrap中的下拉菜单时,遇到下面情况: <div class="dropdown"> <button class="btn btn-de ...

  8. 《转》架设一个BLOG需要整合多少东西?

    本文转载自大CC 1 Wordpress本身需要花费功夫的地方不多,比较容易,但Themes要花不少功夫调整,有时还得改CSS.推荐几个Wordpress Themes网站: - http://the ...

  9. 修改yum源为阿里云的

    将Centos的yum源更换为国内的阿里云源 author:headsen chen date:2018-04-28  13:33:41 1.备份  mv /etc/yum.repos.d/CentO ...

  10. 不固定宽度的div居中显示

    对于div的居中 ,如果是有固定宽高的,可以加margin:auto;水平垂直居中,但如果是不固定宽高,又想让div居中的话,这种方式都可能不奏效,达不到想要的效果. 有两种方法:1.加display ...