bootstrap使用之多个弹窗和拖动效果[开发篇]

    有时开发一些特效,自己感觉挺爽的,像操作自己电脑一样操作你的网页,这里就介绍一个使用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'));

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

posted @ 2015-11-13 16:08  阿牛20  阅读(935)  评论(0编辑  收藏  举报