轻松实现js弹框显示选项
作者:kirsten_z 发布时间:2024-05-08 09:32:51
标签:js,弹框
先看看效果:
效果
-点击弹出弹框
-点击复选框,已选div中 显示已选中的选项
-再次点击取消选中状态,已选div中 显示的选中选项取消显示
-点击 已选 div中的 选项x图标,取消显示该选项 ,取消相应复选框选中状态
-点击大类,小类取消选中状态,点击小类,选中大类取消选中状态
-最多3个选项可以被选中
-点击x图标关闭弹框
-点击确定按钮显示选择后的结果
代码块
html片段代码
<div class="one_search clearfix">
<label class="search_label">科室分类:</label>
<div class="search_select">
<input type="hidden" name="cg_str" id="cg_str" @if(Input::has('cg_str')) value="{{Input::get('cg_str')}}" @endif />
<input type="text" name="type" id="type" onClick="getWindowPop()" @if(Input::has('type')) value="{{Input::get('type')}}" @endif/>
</div>
</div>
<!-- 科室类型start -->
<div id="closePopWindow" style="display: none;">
<div class="cover"></div>
<div class="pop_sele_box">
<div class="pop_tab_menu">
<ul id="tagChange">
<li><a href="javascript:void(0);">临床医学</a></li>
<li><a href="javascript:void(0);">辅助科室</a></li>
<li><a href="javascript:void(0);">其他</a></li>
<li class="pop_close"><a class="close" onclick="$('#closePopWindow').fadeOut()"></a></li>
</ul>
<div class="clear"></div>
</div>
<div class="pop_sele_cont_box" >
<!-- 临床医学-S -->
<div class="pop_sele">
<!-- 内科-S -->
<div class="sele_tit_block">
<input class="sele_check" type="checkbox" value="4" parent="1"/>
<label class="sele_tit_txt">内科</label>
<div class="clear"></div>
</div>
@foreach($oLcyx1 as $key=>$val)
<div class="sele_block clearfix">
<input class="sele_check" type="checkbox" value="{{$val->id}}" parent="{{$val->parent_id}}"/>
<label class="sele_txt">{{$val->name}}</label>
<div class="clear"></div>
</div>
@endforeach
<div class="clear"></div>
<!-- 内科-E -->
<!-- 外科-S -->
<div class="sele_tit_block">
<input class="sele_check" type="checkbox" value="5" parent="1"/>
<label class="sele_tit_txt">外科</label>
<div class="clear"></div>
</div>
@foreach($oLcyx2 as $key=>$val)
<div class="sele_block clearfix">
<input class="sele_check" type="checkbox" value="{{$val->id}}" parent="{{$val->parent_id}}"/>
<label class="sele_txt">{{$val->name}}</label>
<div class="clear"></div>
</div>
@endforeach
<div class="clear"></div>
<!-- 外科-E -->
<!-- 其他-S -->
<div class="sele_tit_block">
<input class="sele_check" type="checkbox" value="6" parent="1"/>
<label class="sele_tit_txt">其他</label>
<div class="clear"></div>
</div>
@foreach($oLcyx3 as $key=>$val)
<div class="sele_block clearfix">
<input class="sele_check" type="checkbox" value="{{$val->id}}" parent="{{$val->parent_id}}"/>
<label class="sele_txt">{{$val->name}}</label>
<div class="clear"></div>
</div>
@endforeach
<div class="clear"></div>
<!-- 其他-E -->
</div>
<!-- 临床医学 -E -->
<!-- 辅助科室-S -->
<div class="pop_sele">
<div class="sele_tit_block">
<div class="clear"></div>
</div>
@foreach($oFzks as $key=>$val)
<div class="sele_block clearfix">
<input class="sele_check" type="checkbox" value="{{$val->id}}" parent="{{$val->parent_id}}"/>
<label class="sele_txt">{{$val->name}}</label>
<div class="clear"></div>
</div>
@endforeach
<div class="clear"></div>
</div>
<!-- 辅助科室-E -->
<!-- 医药公司-S -->
<div class="pop_sele">
<div class="sele_tit_block">
<div class="clear"></div>
</div>
@foreach($oYygs as $key=>$val)
<div class="sele_block clearfix">
<input class="sele_check" type="checkbox" value="{{$val->id}}" parent="{{$val->parent_id}}"/>
<label class="sele_txt">{{$val->name}}</label>
<div class="clear"></div>
</div>
@endforeach
<div class="clear"></div>
</div>
<!-- 医药公司-E -->
</div>
<!-- 信息选中后出现的位置-S -->
<div class="pop_btm_box">
<div class="sele_department_block">
<div class="left_block">已选:</div>
<div class="right_block">
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<div class="pop_btn_block">
<input class="pop_btn" type="button" value="确定" onClick="checkReturn();"/>
</div>
</div>
<!-- 信息选中后出现的位置-E -->
<!--信息提示-->
<div class="pop_txt_box" id="msg">最多3个选项</div>
</div>
</div>
<!-- 科室类型end -->
js片段代码
<script>
//定义初始全局变量
var num = 1;//科室类别可选数量
var cg_str = '';//科室类别id字符串
var type = '';//科室类别名字符串
//刷新保持选中状态
$(function(){
var str = $("#cg_str").val();
if(str.length < 1){
return false;
}else{
cg_str = str + '/';
type = $("#type").val() + '+';
}
str = str.split("/");
for(var i = 0; i < str.length; i++){
$("div.pop_sele").find("div").find("input[type='checkbox']").each(function(){
if($(this).val() == str[i]){
$(this).attr("checked", true);
var Val = $(this).val();
var labelVal = $(this).next("label").html().trim();
//放置到已选div 中
var html = '<div class="department_block">'
+ '<div class="left">' + labelVal + '</div>'
+ '<div class="right">'
+ '<a href="javascript:void(0);" onclick="removeSelector(this, ' + Val + ');"></a>'
+ '</div>'
+ '</div>';
$("div.right_block").append(html);
num++;
}
});
}
});
//打开 科室类别选项框
function idNumber(prefix){
var idNum = prefix;
return idNum;
}
function show_hidden(controlMenu,num,prefix){
controlMenu.eq(num).siblings().find('a').removeClass("sele");
controlMenu.eq(num).find('a').addClass("sele");
var content= prefix + num;
$('#'+content).show();
$('#'+content).siblings().hide();
}
function getWindowPop(){
$("ul#tagChange li").find("a").removeClass("sele");
$("ul#tagChange li:first-child a").addClass("sele");
$("div.pop_sele_cont_box").find("div.pop_sele:first-child").show();
$("div.pop_sele_cont_box").find("div.pop_sele:not(:first-child)").hide();
$("div.pop_sele_cont_box div.pop_sele").attr("id",function(){
return idNumber("No")+ $("div.pop_sele_cont_box div.pop_sele").index(this);
});
$('#closePopWindow').show();
}
$("ul#tagChange li:not(:last-child)").click(function(){
var c = $("ul#tagChange li");
var index = c.index(this);
if(index<3){
var p = idNumber("No");
show_hidden(c,index,p);
}
});
//选择科室类别
$("div.pop_sele").find("div").find("input[type='checkbox']").click(function(){
var Val = $(this).val();
var labelVal = $(this).next('label').html().trim();
var parent = $(this).attr("parent");
if($(this).is(":checked")){//选中处理
//处理大小类选项
$("div.pop_sele").find("div").find("input[type='checkbox']:checked").each(function(){
if($(this).val() == parent || $(this).attr("parent") == Val){
$(this).attr("checked", false);
var v = $(this).val();
var lab = $(this).next('label').html().trim();//当前对象标签值
$("div.department_block").find("div.left").each(function(){
if($(this).html().trim() == lab){
var index = $("div.department_block").find("div.left").index(this);
$("div.department_block").eq(index).remove();//移除该已选 选项
//修改科室类别 值
cg_str = cg_str.replace(v + '/', "");
type = type.replace(lab + '+', "");
num--;
}
});
}
});
//判断num值
if(num > 3){
$('#msg').html("最多3个选项");
$('#msg').fadeIn();
setTimeout(function(){$('#msg').fadeOut();},1000);
return false;
}
cg_str += Val + '/';
type += labelVal + '+';
//放置到已选div 中
var html = '<div class="department_block">'
+ '<div class="left">' + labelVal + '</div>'
+ '<div class="right">'
+ '<a href="javascript:void(0);" onclick="removeSelector(this, ' + Val + ');"></a>'
+ '</div>'
+ '</div>';
$("div.right_block").append(html);
num++;
}else{//未选中
$(this).attr("checked", false);
$("div.department_block").find("div.left").each(function(){
if($(this).html().trim() == labelVal){
var index = $("div.department_block").find("div.left").index(this);
$("div.department_block").eq(index).remove();//移除该已选 选项
//修改科室类别 值
cg_str = cg_str.replace(Val + '/', "");
type = type.replace(labelVal + '+', "");
num--;
}
});
}
});
//清除已选 选项
function removeSelector(obj, val){
var index = $("div.department_block").find("div.right").find("a").index(obj);
var labelVal = $(obj).parent().parent().find("div.left").html().trim();
$("div.department_block").eq(index).remove();//移除该已选 选项
//复选框置为未选中
$("div.pop_sele").find("div").find("input[type='checkbox']:checked").each(function(){
if($(this).val() == val){
$(this).attr("checked", false);
}
});
//修改科室类别 值
cg_str = cg_str.replace(val + '/', "");
type = type.replace(labelVal + '+', "");
num--;
}
//关闭科室类别选项框
function checkReturn(){
//将值放入文本框
var cg_ids = cg_str.substring(0,cg_str.length-1);
var type_str = type.substring(0, type.length-1);
$("#cg_str").val(cg_ids);
$("#type").val(type_str);
$('#closePopWindow').fadeOut();
}
</script>


猜你喜欢
- 在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat 、 matrix 以
- 实现目标:mysql下将自增主键的值,从10000开始,即实现自增主键的种子为10000。方案1)使用alter table `tablen
- EasyUI 简介easyui是一种基于jQuery的用户界面插件集合。easyui为创建现代化,互动,JavaScript应用程序,提供必
- 首次安装、运行MySQL时,你可能会遇到一些错误,使MySQL服务器不能启动。本节的目的是帮助你诊断并纠正这些错误。解决服务器问题时你的第一
- 本文实例讲述了python排序方法。分享给大家供大家参考。具体如下:>>> def my_key1(x):... &nbs
- 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这是个最简单的办法,但是后果会有些不是你想要的
- 一、前言本次安装tensorflow是基于Python的,安装Python的过程不做说明(既然决定按,Python肯定要先了解啊):本次教程
- 一、使用我使用的是python3,可以自行搜索下载二、安装phone模块pip install phone三、测试代码如下:from pho
- 通过本接口可以查询圆通快递、申通快递、ems快递、韵达快递等快递单号查询信息,无需其他额外开发,非常方便首先到www.aikuaidi.cn
- 百度语音对上传的语音要求目前必须是单声道,16K采样率,采样深度可以是16位或者8位的PCM编码。其他编码输出的语音识别不出来。语音的处理技
- 0x01 生成shellcode首先通过下列命令生成一个shellcode,使用msfvenom -p选项来指定paylaod,这里选用wi
- 使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢?在JDBC编程接口中Stateme
- ansible 简介ansible 是什么?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、
- 我们可以利用Session对象来进行注册验证。Session对象会帮我们把某一用户的信息保留下来,让后续的网页读取。我们就可以在用户注册成功
- 前言嗨嗨,大家晚上好 ~ 又来给你们分享小妙招啦在python列表有重复元素时,可以有以下几种方式进行删除觉得不错的话,赶紧学起来用用吧 !
- 1.Anaconda 安装python3.6conda create -n match python=3.6Python版本默认安装是 3.
- httprouterhttprouter 是一个高性能、可扩展的HTTP路由,上面我们列举的net/http默认路由的不足,都被httpro
- 一、制作播放器的思路制作一个多功能音乐播放器的思路确定播放器的需求和功能,例如支持哪些音频格式、播放列表管理、循环播放、暂停、进度条显示等等
- # 递归满足的条件# 1.自己调用自己# 2.必须有一个明确的结束条件# 优点:逻辑简单\定义简单# 缺点:防止内存消耗过多,容易导致栈溢出
- 本文为大家分享了mysql 8.0.12 安装详细教程,供大家参考,具体内容如下一、安装 1.从官网上下载MySQL8.0.12版本,下载链