select中如何添加checkbox?

5 篇文章 0 订阅
3 篇文章 0 订阅

普通的select框,选择的时候只能选单项。但是有时候项目需要,需要选择两项或者多项,最常用的设计就是模拟select下拉选择的形式,效果图如下:

我今天的方法不是用select实现的,而是模拟select的形式。代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{padding: 0;margin: 0; box-sizing:border-box}
/*单选-复选*/
label{ cursor:pointer;line-height:15px; }
.label-check{ background:url(images/check.png) no-repeat; }
.check-checked{ background:url(images/check-checked.png) no-repeat }
.label-check input{ opacity:0; filter:alpha(opacity=0);}
.title{
  width: 300px;
  height: 30px;
  line-height:30px;
  border: 1px solid #dcdcdc;
  border-radius: 5px;
  padding:0px 40px 0px 10px;
  background:#fff; 
  background:url(images/icon_select_bg.png) no-repeat right;
  position:absolute;
  top:0px;
  left:0px;
}
.input-define{ width:250px; height:22px; line-height:22px; border:none; outline:none;}
#selectbox{
  width: 300px;
  height: 30px;
  line-height:30px;
  position: relative;
  margin:0px auto;
}
#selectbox ul {
  width: 300px;
  background: #fff;
  position: absolute;
  top: 40px;
  left: 0px;
  border: 1px solid #eaeaea;
  border-radius: 5px;
  display: none;
}
#selectbox ul li {
  list-style: none;
  height:25px; 
  line-height:25px;
  padding:0px 10px;
}
#selectbox ul li:hover{ background:#f3f3f3; }
#data { display:none; }
</style>
</head>
<body>
<div id="selectbox">
   <div class="title">
      <input type="text" class="input-define" id="input-define"  placeholder="请选择"/>
   </div>
   <ul>
      <li>
          <label for="checkbox-01" class="label-check">
             <input type="checkbox" id="checkbox-01" name="checkbox"  value="人流量热力图"/>
          </label>
          人流量热力图
      </li>
      <li>
          <label for="checkbox-02" class="label-check">
              <input type="checkbox" id="checkbox-02" name="checkbox"  value="流量热力图"/>
          </label>
          流量热力图
      </li>
      <li>
          <label for="checkbox-03" class="label-check">
               <input type="checkbox" id="checkbox-03" name="checkbox"  value="景点热度"/>
          </label>
          景点热度
       </li>
       <li>
           <label for="checkbox-04" class="label-check">
               <input type="checkbox" id="checkbox-04" name="checkbox"  value="mr栅格"/>
           </label>
           mr栅格
       </li>
       <li>
            <label for="checkbox-05" class="label-check">
               <input type="checkbox" id="checkbox-05" name="checkbox"  value="热门消费点"/>
            </label>
            热门消费点
       </li>
       <li>
            <label for="checkbox-06" class="label-check">
                <input type="checkbox" id="checkbox-06" name="checkbox"  value="dpi栅格"/>
            </label>
            dpi栅格
       </li>       
    </ul>
    <span id="data"></span>
 </div>
 
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
//定义一个空数组去接收value值
var arr = []; 
var put1=document.getElementById("input-define");
var div1=document.getElementById("data");
//仿select的点击事件
$("#selectbox").click(function(event){
  var ev = event || window.event;
  //阻止默认事件及封装
  if (ev.stopPropagation) {
     ev.stopPropagation();
   }else{
   ev.cancelable = true;
  }
  $("#selectbox ul").css("display","block");
 });
 
 $(window).click(function(){
   $("#selectbox ul").css("display","none");
 });
 //监听checkbox的value值 改变则执行下列操作
 $("input").change(function(){
    if ($(this).prop("checked")) {
      arr.push($(this).val()+",");
      console.log(arr);
    }else{
      arr.shift($(this).val()+",");
    }
 $("#data").html(arr);
	put1.value=div1.innerText;
 });
 
 //复选
 $(function(){
     $('.label-check').click(function(){ setupCheck(); });
     });//点击label-check时执行以下事件setupCheck()
 function setupCheck(){
     if($('.label-check input').length) {
     $('.label-check').each(function(){ $(this).removeClass('check-checked'); });//移除.label-check的选中样式
     $('.label-check input:checked').each(function(){ $(this).parent('label').addClass('check-checked'); }); 
     }//选中复选选项时给其父元素.label-check增加选中样式
 }
 
</script>
 </body>
</html>

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值