輕松實(shí)現(xiàn)js彈框顯示選項(xiàng)
先看看效果:

效果
-點(diǎn)擊彈出彈框
-點(diǎn)擊復(fù)選框,已選div中 顯示已選中的選項(xiàng)
-再次點(diǎn)擊取消選中狀態(tài),已選div中 顯示的選中選項(xiàng)取消顯示
-點(diǎn)擊 已選 div中的 選項(xiàng)x圖標(biāo),取消顯示該選項(xiàng) ,取消相應(yīng)復(fù)選框選中狀態(tài)
-點(diǎn)擊大類(lèi),小類(lèi)取消選中狀態(tài),點(diǎn)擊小類(lèi),選中大類(lèi)取消選中狀態(tài)
-最多3個(gè)選項(xiàng)可以被選中
-點(diǎn)擊x圖標(biāo)關(guān)閉彈框
-點(diǎn)擊確定按鈕顯示選擇后的結(jié)果
代碼塊
html片段代碼
<div class="one_search clearfix">
<label class="search_label">科室分類(lèi):</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>
<!-- 科室類(lèi)型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);">臨床醫(yī)學(xué)</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" >
<!-- 臨床醫(yī)學(xué)-S -->
<div class="pop_sele">
<!-- 內(nèi)科-S -->
<div class="sele_tit_block">
<input class="sele_check" type="checkbox" value="4" parent="1"/>
<label class="sele_tit_txt">內(nèi)科</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>
<!-- 內(nèi)科-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>
<!-- 臨床醫(yī)學(xué) -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 -->
<!-- 醫(yī)藥公司-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>
<!-- 醫(yī)藥公司-E -->
</div>
<!-- 信息選中后出現(xiàn)的位置-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>
<!-- 信息選中后出現(xiàn)的位置-E -->
<!--信息提示-->
<div class="pop_txt_box" id="msg">最多3個(gè)選項(xiàng)</div>
</div>
</div>
<!-- 科室類(lèi)型end -->
js片段代碼
<script>
//定義初始全局變量
var num = 1;//科室類(lèi)別可選數(shù)量
var cg_str = '';//科室類(lèi)別id字符串
var type = '';//科室類(lèi)別名字符串
//刷新保持選中狀態(tài)
$(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++;
}
});
}
});
//打開(kāi) 科室類(lèi)別選項(xiàng)框
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);
}
});
//選擇科室類(lèi)別
$("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")){//選中處理
//處理大小類(lèi)選項(xiàng)
$("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();//當(dāng)前對(duì)象標(biāo)簽值
$("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();//移除該已選 選項(xiàng)
//修改科室類(lèi)別 值
cg_str = cg_str.replace(v + '/', "");
type = type.replace(lab + '+', "");
num--;
}
});
}
});
//判斷num值
if(num > 3){
$('#msg').html("最多3個(gè)選項(xiàng)");
$('#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();//移除該已選 選項(xiàng)
//修改科室類(lèi)別 值
cg_str = cg_str.replace(Val + '/', "");
type = type.replace(labelVal + '+', "");
num--;
}
});
}
});
//清除已選 選項(xiàng)
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();//移除該已選 選項(xiàng)
//復(fù)選框置為未選中
$("div.pop_sele").find("div").find("input[type='checkbox']:checked").each(function(){
if($(this).val() == val){
$(this).attr("checked", false);
}
});
//修改科室類(lèi)別 值
cg_str = cg_str.replace(val + '/', "");
type = type.replace(labelVal + '+', "");
num--;
}
//關(guān)閉科室類(lèi)別選項(xiàng)框
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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js+html5實(shí)現(xiàn)半透明遮罩層彈框效果
- vue.js中toast用法及使用toast彈框的實(shí)例代碼
- js自定義彈框插件的封裝
- vue.js實(shí)現(xiàn)只彈一次彈框
- js重寫(xiě)alert事件(避免alert彈框標(biāo)題出現(xiàn)網(wǎng)址)
- js實(shí)現(xiàn)上下左右彈框劃出效果
- 基于layer.js實(shí)現(xiàn)收貨地址彈框選擇然后返回相應(yīng)的地址信息
- javascript實(shí)現(xiàn)無(wú)法關(guān)閉的彈框
- JavaScript實(shí)現(xiàn)alert彈框效果
- JavaScript封裝彈框插件的方法
相關(guān)文章
網(wǎng)站導(dǎo)致瀏覽器崩潰的原因總結(jié)(多款瀏覽器) 推薦
對(duì)于訪(fǎng)客,如果登錄您網(wǎng)站,瀏覽器就立刻崩潰,我想這對(duì)誰(shuí)都是無(wú)法容忍的,對(duì)此總結(jié)了網(wǎng)站導(dǎo)致瀏覽器崩潰的原因2010-04-04
JS密碼生成與強(qiáng)度檢測(cè)完整實(shí)例(附demo源碼下載)
這篇文章主要介紹了JS密碼生成與強(qiáng)度檢測(cè)完整實(shí)例,涉及JavaScript密碼的生成,破解時(shí)間計(jì)算,密碼安全監(jiān)測(cè)及大小寫(xiě)鎖定判斷等功能的實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04
一個(gè)字符串反轉(zhuǎn)函數(shù)可實(shí)現(xiàn)字符串倒序
這篇文章主要介紹了一個(gè)字符串反轉(zhuǎn)函數(shù)可實(shí)現(xiàn)字符串倒序,很簡(jiǎn)單,但很實(shí)用,感興趣的朋友可以參考下2014-09-09
微信小程序使用form表單獲取輸入框數(shù)據(jù)的實(shí)例代碼
這篇文章主要介紹了微信小程序使用form表單獲取輸入框數(shù)據(jù)的實(shí)例代碼,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
JavaScript方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了JavaScript方法,詳細(xì)的介紹了JavaScript幾種函數(shù)定義方式及使用方法,感興趣的小伙伴們可以參考一下2017-06-06
javascript 3d 逐偵產(chǎn)品展示(核心精簡(jiǎn))
這篇文章主要介紹了javascript實(shí)現(xiàn)的3d逐偵產(chǎn)品展示,需要的朋友可以參考下2014-03-03
解決使用layui對(duì)select append元素?zé)o效或者未及時(shí)更新的問(wèn)題
今天小編就為大家分享一篇解決使用layui對(duì)select append元素?zé)o效或者未及時(shí)更新的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09

