bootstrap实现弹窗和拖动效果


Posted in Javascript onJanuary 03, 2016

有时开发一些特效,自己感觉挺爽的,像操作自己电脑一样操作你的网页,这里就介绍一个使用bootstrap的一点多窗口和拖动效果吧!

这里,我们不使用静态打开的的方式,low...,1、添加一个a链接 触发,打开按钮;2、编写动态打开js脚本; 3、编写modal中间内容;4、添加拖动效果;5、打开多个modal , 调用dragModal(new Array('modalId1','modalId2'));

1、添加一个a链接 触发,打开按钮:

<a href="javascript:;" title="开关" class="open-modal-dynamic" url="index.php?m=index&c=cc&a=aa&id=22" alert='1' divid="editModal">打开modal<a>
<div id="addModal" class="modal hide fade" style="max-width:800px;" data-backdrop="static"></div> <!-- 打开容器 -->

2、编写动态打开js脚本:

//打开弹窗
 $('.open-modal-dynamic').on('click', function(){
  var modalId = $(this).attr('divid') ? $(this).attr('divid') : 'Modal', url = $(this).attr('url');
  $.get(url, function(data){
   if(data.status == 1){
    //禁止选择文字,在拖动时会有影响
    $('html').off('selectstart').on('selectstart', function(){return false;});
    $('#' + modalId).html(data.htmlData);
    $('#' + modalId).modal({'show':true});
   }else{
    alert(data.info);
   }
  }, 'json');

3、编写modal中间内容:

<style>
 .line{margin-bottom: 5px;}
 .line .left{width: 100px;text-align:right;display:block;}
 .form-button{padding:2px 10px;background:#73A86A;color:#ffffff;border:none;}
 .form-button:hover{background:#146206;}
</style>
<div class="modal-header">
 <a class="close" title="关闭小窗口" data-dismiss="modal">×</a>
 <h3>modal window<h3>
</div>
<div class="modal-body" style="padding-bottom: 5px;">
 <div class="line">
  <span class="left">脚本名称:</span>
  <span>
  <select name="name">
 <option value='11'>11</option>
  <option value='22'>22</option>
  </select>
  </span>
 </div>
 <div class="line">
  <span class="left">日期:</span>
  <span style="word-break:break-all;" title="的时间">
   <input class="Wdate ipt date-picker" style="width: 100px;margin: 0;" type="text" id="date_add" value="" />
  </span>
 </div>
 <div class="line" title="设置">
  <span class="left">是否停止:</span>
  <span>
   <label><input type="radio" name="is_del_add" value="1" />强制停止</label>
   <label><input type="radio" name="is_del_add" value="0" />正常处理</label>
  </span>
 </div>
 <div class="line" title="按照实际情况允许进行模拟更改">
  <span class="left">执行情况:</span>
  <span>
   <label><input type="radio" name="status_add" value="5" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" />11</label>
   <label><input type="radio" name="status_add" value="1" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" />22成</label>
   <label><input type="radio" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" name="status_add" value="2"/>223行</label>
   <label><input type="radio" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" name="status_add" value="0" />445</label>
   <label><input type="radio" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" name="status_add" value="4" />55失败</label>
  </span>
 </div>
 <div class="line">
  <span>操作说明:</span>
  <textarea name="memo" id="memo" cols="100" rows="1" style="width:370px;></textarea>
 </div>
 <div class="line" style="text-align:center;">
  <input type="button" value="提交" class="form-button" id="submit2" />
  <input type="hidden" id="id_add" value="22" />
 </div>
</div>
<div class="modal-footer">
 <span class="loading"></span>
 <button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
</div>
<script src="/js/dragModal.js"></script>
<script>
 $(function(){
  $('#submit2').off().on('click', function(){
   var status = $('input[name=status_add]:checked').val(),
     memo = $('#memo').val(),
     id = parseInt($('#id_add').val()),
     is_del = $('input[name=del_add]:checked').val(),
     cron_name = $('#name_add').val(),
     cron_date = $('#date_add').val(),
     url ='index.php?m=xx&c=xx&a=';
   if(!memo){
    alert('请填写操作备注,如不处理,请直接关闭对话框!');
    return false;
   }
   $.post(url, {status: status, cron_name:cron_name, memo: memo, id: id, cron_date: cron_date, is_del: is_del}, function(data){
    if(data.status == 1){
     alert(data.info);
     window.location.reload();
    }else{
     alert(data.info);
    }
   }, 'json')
  });
 
 });
 // drag effects begin, define the global variables to receive the changes,because of the different function of the modal
  dragModal('editModal');
</script>

4、添加拖动效果:

var clicked = "0";
var dif = {};
;function dragModal(obj) {
 
 if(clicked == undefined || obj == undefined || dif == undefined){
  return false;
 }
 if(typeof obj == 'string')
 {
  obj = new Array(obj);
 }
 var modalNums = obj.length;
 //drag effects begin
 var i = 0;
 for (i = 0; i < modalNums; i++) {
  dif[obj[i]] = {'difx': 0, 'dify': 0};
 }
 $("html").off('mousemove').on('mousemove', function (event) {
  if (clicked == "0") {
   for (i = 0; i < modalNums; i++) {
    dif[obj[i]].difx = event.pageX - $("#" + obj[i]).offset().left;
    dif[obj[i]].dify = event.pageY - $("#" + obj[i]).offset().top;
   }
  }
  if (clicked > 0 && clicked <= modalNums) {
   var clickedObj = obj[clicked - 1];
   var newx = event.pageX - dif[clickedObj].difx - $("#" + clickedObj).css("marginLeft").replace('px', '');
   var newy = event.pageY - dif[clickedObj].dify - $("#" + clickedObj).css("marginTop").replace('px', '');
   $("#" + clickedObj).css({top: newy, left: newx});
  }
 
 });
 
 $("html").off('mouseup').on('mouseup', function (event) {
  clicked = "0";
 });
 
 for(i = 0; i < modalNums; i++){
  //注重此处不能直接传入i值,此处即为添加多窗口时的效果使用
  $("#" + obj[i] + " .modal-header").off().on('mousedown',{index: i}, function (event) {
   clicked = event.data.index + 1;
  });
  $("#" + obj[i] + " .modal-footer").off().on('mousedown', {index: i}, function (event) {
   clicked = event.data.index + 1;
  });
  $('#' + obj[i]).on('hide.bs.modal', function () {  //关闭时打开选中
   $('html').off('selectstart').on('selectstart', function () {
    return true;
   });
  });
 
 }
}

5、打开多个modal , 调用dragModal(new Array('modalId1','modalId2'));

整个过程即是如此,有需要的,就参考参考吧!

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

Javascript 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
Safari5中alert的无限循环BUG
Apr 07 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
Dec 20 Javascript
分享一个自己写的简单的javascript分页组件
Feb 15 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
jQuery中的select操作详解
Nov 29 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 Javascript
利用Vue2.x开发实现JSON树的方法
Jan 04 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
微信小程序单选框自定义赋值
May 26 Javascript
基于javascript实现窗口抖动效果
Jan 03 #Javascript
理解jquery事件冒泡
Jan 03 #Javascript
实例讲解避免javascript冲突的方法
Jan 03 #Javascript
详解js中class的多种函数封装方法
Jan 03 #Javascript
js中利用tagname和id获取元素的方法
Jan 03 #Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 #Javascript
基于javascript实现简单计算器功能
Jan 03 #Javascript
You might like
香妃
2021/03/03 冲泡冲煮
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
浅谈php调用python文件
2019/03/29 PHP
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python中模块查找的原理与方法详解
2017/08/11 Python
django中的setting最佳配置小结
2017/11/21 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
python实现学生成绩测评系统
2020/06/22 Python
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
什么是接口(Interface)?
2013/02/01 面试题
2015个人简历自我评价语
2015/03/11 职场文书
工作年限证明范本
2015/06/15 职场文书
统招统分证明
2015/06/23 职场文书
个人售房合同协议书
2016/03/21 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
一文带你探究MySQL中的NULL
2021/11/11 MySQL
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS