最近由于项目需要,前端页面需要做一个带复选功能的下拉菜单,由于在项目中,需要特定的样式等,所以,给出核心代码以供日后复习:

1.效果图

  

   

2.实现的主要功能

    (1)上方提示信息

    (2)没有复选框但是有复选功能

    (3)全选和全不选的功能

    (4)选择或者取消后在上方横线上文本能体现出来

    (5)滚动条样式

3.核心代码

   因为是从项目中抽出来的,所以代码不可直接运行,主要的思路如下:

  jsp页面:

 

<span id="terminalTypeSpan"  style="display:none;">
	<select id="terminalType" name="terminalType"  class="easyui-combobox sep" data-options="editable:true,width:500" ></select>
	<div id="spanel">
	   <div id="sp">
		  <div class="checkitem">
                             <span class="checkbox1" id="all">✔</span>
			     <span class="checkboxValue">全部终端设备</span>
	           </div>
	   </div>
         </div>
</span>

js代码:
 <pre name="code" class="javascript">$('#terminalType').combo({
		required:false,
		editable:true,
		multiple:true
	});
	$('#spanel').appendTo($('#terminalType').combo('panel'));
	var _value="";
	var _text="终端设备";
	//提示信息
	$('#terminalType').combo('setText', _text);
	//下拉菜单操作
	$("#sp div").click(function(){
		var visibilityVal = $(this).find(".checkbox1").css("visibility");
		var tt = $(this).find(".checkboxValue").text();
		if(visibilityVal=="visible"){
			$(this).find(".checkbox1").css("visibility","hidden");
			//全部取消
			if(tt=="全部终端设备"){
				$(this).siblings().find(".checkbox1").css("visibility","hidden");
				_text = "终端设备";
			}else{
				$("#all").css("visibility","hidden");
			}
			if(_text!=tt){
				if(_text.indexOf(tt)!=0){
					 tt=","+tt;
				}else{
					 tt=tt+",";		 
				}
			}
			_text = _text.replace(tt,"");
			if(_text==""){
				_text = "终端设备";
			}
			$('#terminalType').combo('setValue', _value).combo('setText', _text);
		}else{
			$(this).find(".checkbox1").css("visibility","visible");
			//全选
			if(tt=="全部终端设备"){
				tt="";
				_text = "";
				//1.所有对号出现
				$(this).siblings().find(".checkbox1").css("visibility","visible");
				//2.重写text的值
				var texts =$(this).siblings().children(".checkboxValue");
				for(var i = 0;i<texts.length;i++){
					//最后一个元素值不需要逗号
					if(i==(texts.length-1)){
						_text+=texts[i].innerHTML;
						break;
					}
					_text+=texts[i].innerHTML+",";
				}
			}
			if(tt!=""){
				if(_text=="终端设备"){
					_text="";
					_text+=tt;
				}else{
					_text+=","+tt;
				}
			}
			
			$('#terminalType').combo('setText', _text);
		 }
		});

部分css样式:
.super-search{
	float:right; 
	color:#46aae4;
	margin-top:10px;
    margin-right:25%; 
	cursor:pointer;
}
#btn-superSearch {
        background :url("../images/btn-superSearch.png") no-repeat 0px 5px;
        position:relative;
        top:10px;
        width:10px;
        height:10px;    
}
 .checkitem { 
    margin:5px 0px 5px 0px;
    line-height:25px;
    font-size:11px;
    color:#5e5e5e;
 } 
 .checkitem:hover {
    background:url("../images/table-body-td.png") no-repeat #3B89BE;
    color:white;
	cursor: default;
 }






本文转载:CSDN博客