bootstrap doublebox带查询的穿梭框

这篇博客介绍了如何在不支持layui穿梭框的IE8环境下,利用Bootstrap来创建一个功能完善的穿梭框组件。文章通过示例代码展示了在父页面中调用穿梭框并回显选择结果的过程,并提供了弹出穿梭框页面的完整HTML和JavaScript实现。此外,作者还分享了一个已在实际环境中稳定运行的示例和相关资源下载链接。
摘要由CSDN通过智能技术生成

1.首先看效果图

我们的需求是带查询的穿梭框,试过layui的穿梭框兼容性(ie8)不是太好,现用bootstrap的穿梭框,效果不错

选择完之后在父页面回显

2.代码实现

父页面点击选择专家的时候方法

function chooseExpertNameTemplate(){
    var expertId=$("#expertId").val();
    var url = "/project/beforeApproval/chooseExpertNameTemplate.jsp?expertId="+expertId;
    var status = 'dialogwidth=600px;dialogheight=450px; status=no,scroll=no,resizable=no';
    selectMode="multi";
    var rtnPeoples = window.showModalDialog(url, window, status);
    if(typeof rtnPeoples == 'undefined' || rtnPeoples == '' || rtnPeoples == null){
        return false;
    };
    var smsTemplateIds=rtnPeoples.split("-_-")[0];
    var smsTemplateNames=rtnPeoples.split("-_-")[1];
    $("#expertId").val(smsTemplateIds);
    $("#expertName").val(smsTemplateNames);
    $("#templateContent").val(smsTemplateNames);
};

弹出穿梭框页面代码

<!DOCTYPE html>
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
    String expertId = (String)request.getParameter("expertId");//获取选择专家id集合
%>
<html>
  <head>
    <base target="_self" />
    <title>选择专家</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <!-- 需要引用的CSS -->
    <link rel="stylesheet" type="text/css" href="/project/css/bootstrap.css" />
    <link rel="stylesheet" type="text/css" href="/project/css/font-awesome.css">
    <!-- <link rel="stylesheet" type="text/css" href="http://www.jq22.com/jquery/font-awesome.4.6.0.css"> -->
    <link rel="stylesheet" type="text/css" href="/project/css/doublebox-bootstrap.css" />
    <style>
  .ue-container {
       width: 100%;
       margin: 0 auto;
       margin-top: 3%;
       padding: 20px 40px;
       border: 1px solid #ddd;
       background: #fff;
   }
    </style>
  </head>
  <body>
    <!-- 页面结构 -->
    <div class="ue-container">
        <select multiple="multiple" size="10" name="doublebox" class="demo">
        </select>
    </div>
    <div class="botton" align="center" style="margin-top: 10px;">
        <input type="button" class="btn" value="&nbsp;确&nbsp;&nbsp;定&nbsp;" οnclick="submitSelected();"/>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="button" class="btn" value="&nbsp;取&nbsp;&nbsp;消&nbsp;" οnclick="cancelSelected();"/>
    </div>
    <!-- 需要引用的JS -->
    <script src="/project/js/jquery-1.10.2.js"></script>
    <script type="text/javascript" src="/project/js/bootstrap.js"></script>
    <script type="text/javascript" src="/project/js/doublebox-bootstrap.js"></script>
    <script type="text/javascript">
        /* $(document).ready(function(){
          var demo2 = $('.demo').doublebox({
                  nonSelectedListLabel: '选择角色',
                  selectedListLabel: '授权用户角色',
                  preserveSelectionOnMove: 'moved',
                  moveOnSelect: false,
                  nonSelectedList:[{"userId":"1","userName":"zhangsan"},{"userId":"2","userName":"lisi"},{"userId":"3","userName":"wangwu"}],
                  selectedList:[{"userId":"4","userName":"zhangsan1"},{"userId":"5","userName":"lisi1"},{"userId":"6","userName":"wangwu1"}],
                  optionValue:"userId",
                  optionText:"userName",
                  doubleMove:true
            });
        }); */
        var expertId="<%=expertId%>";
        var doublefox;
        
        $(function() {
            var  realNameCode;
            var  selectedLabelList;
            $.ajax({
                url:"/project/expertMnanager?event=GetExpertListJson&expertId="+expertId,
                async:false,
                type:"post",
                dataType : "json",
                contentType:"application/json",
                success: function (data) {
                    realNameCode = data.expertAllData; // JOSN.parse(data);将 字符串换转成JSON对象
                    selectedLabelList = data.expertSelectedData; //由于返回本来就是Json对象无需进行转换
                },
                error:function(data){
                    console.log("弹窗标签所有列表获取异常");
                }
            });
            
             doublefox = $('.demo').doublebox({
                    nonSelectedListLabel: '选择专家', //左边栏lableName
                    selectedListLabel: '已选专家',    //右边栏lableName
                    preserveSelectionOnMove: 'moved',
                    moveOnSelect: false,
                    nonSelectedList:realNameCode,    //左边栏列表
                    selectedList:selectedLabelList,   //右边栏已选择列表
                    optionValue:"userId",    //option的选项值
                    optionText:"userName",          // option的文本值
                    doubleMove:true,            //控制全部选择和移除的显示
                });
         
        });
        
        function submitSelected(){
            var smsTemplateId='';
            var smsTemplateCode='';
            $('select[name="doublebox_helper2"]').find("option").each(function(index, item) {
                smsTemplateId=smsTemplateId+$(item).val()+',';
                smsTemplateCode=smsTemplateCode+$(item).text()+',';
            });
            if(smsTemplateId==""){
                alert("请选择专家!");
                return false;
            };
            smsTemplateId = smsTemplateId.substring(0,smsTemplateId.length-1);
            smsTemplateCode = smsTemplateCode.substring(0,smsTemplateCode.length-1);
            if (true) {//ie或360兼容模式
                window.returnValue = smsTemplateId+'-_-'+smsTemplateCode;  //返回值到选择的那个页面
                window.close();
            }else{//其他浏览器
                selectedOrgs=smsTemplateContent;
                $(window.opener.document.getElementById("smsTemplateContent")).val(smsTemplateContent);
                window.close();
            }
        };
        
        function cancelSelected(){
            window.close();
            return false;
        };
        
      </script>
  </body>
</html>

具体实现可以参考https://download.csdn.net/download/qq_36254571/16231766

上边下载地址我已经整理了demo和代码实现,现在已经在我们正式环境中稳定运行,有什么问题请@我

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值