此点击按钮,弹出DIV,div内容可以多项选择,点击确定,被选项回填至文本框。功能类似之前写过的一篇日期多选,不过是在其基础上,新增点击页面其他区域,隐藏div功能。



1.css部分代码

.multiData{
position:relative;
height: 28px;
font-size:12px;
}
.multiData .selBtn{
cursor:pointer;
font-size:12px;
}
input.ipt{
text-indent:4px;
}
.chk{
padding:10px;
border:1px solid #bbb;
position:absolute;
left:0px;
top:28px;
display: none;
background:#fff;
}
.chk .days{
width: 200px;
margin:0 auto;
}
.chk .days>label{
display:block;
}
.chk .days>label>div{
display:inline-block;
}
.chk div.days span{
margin-left:10px;
display:inline-block;
}
.chkBtns{
text-align:center;
}

2.js部分代码

   	jQuery(document).ready(function($) {
//点击弹出div外部区域,隐藏div
$("body").bind('click', function() {
//浏览器兼容性
var e = e || window.event;
var elem = e.target || e.srcElement;
while (elem) {
//循环判断至跟节点,防止点击的是div子元素
if ((elem.id && elem.id == 'chk1')||(elem.id && elem.id == 'chk2')) {
return;
}
elem = elem.parentNode;
}
$("[id^='chk']").hide();
}); $("[id^='data']").unbind("click").on("click",function(){
return false;
});
//跟踪分析部门
selDates1("data2","chk2","btnAllChk2","chk2","btnInvert2","chk2","Sure2","ipt2","chk2","checkname1");
});
//跟踪分析部门
function selDates1(data1,data2,data3,data4,data5,data6,data7,data8,data9,data10){
showData(data1,data2);//data1是button的id,data2是class是chk的div的id;
Allchk(data3,data4);//data3全选按钮的id,data4是class是chk的div的id;
Invert(data5,data6);///data5反选按钮的id,data6是class是chk的div的id;
Sure(data7,data8,data9,data10);//data7确定按钮的id,data8是input的id,data9是class是chk的div的id,data10是追加的div内的input的name ; //显示日期多选div
function showData(data1,data2){
$("#"+data1).click(function(){
$("#chk2").hide();
$("#chk1").hide();
$("#"+data2).show();
})
};
//全选
function Allchk(data3,data4){
$("#"+data3).click(function () {
$("#"+data4+" input:checkbox").prop("checked", true);
});
};
//反选
function Invert(data5,data6){
$("#"+data5).click(function () {
$("#"+data6+" input:checkbox").each(function () {
this.checked = !this.checked;
})
});
};
// 选中数据时数组去重
Array.prototype.unique = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
};
//数据按照数值大小排序
function sortNumber(a,b){
return a - b
};
// 确定按钮
function Sure(data7,data8,data9,data10){
var vals=[];
$("#"+data7).click(function(){
vals.splice(0,31);//清空数组,数值最大31 var valIds=[];
$("input[name="+data10+"]").each(function(){
if(this.checked){
vals.push($(this).val());
valIds.push($(this).prop('alt'));
}else{
valIds.push();
}
})
var res = vals.unique();
$("#"+data8).val(res.sort(sortNumber));
$("#"+data9).hide();
});
}; }

3.html部分代码

    <div class="multiData">
<input type="text" name="dept" id="ipt2" class="form-control ipt">
<button type="button" id="data2" class="selBtn">选择部门</button>
<div id="chk2" class="chk">
<div class="days" id="days2">
<label for='1'><input type='checkbox' name='checkname1' id="1" value="张老大"><span>张老大</span></label>
<label for='2'><input type='checkbox' name='checkname1' id="2" value="张老二"><span>张老二</span></label>
<label for='3'><input type='checkbox' name='checkname1' id="3" value="张老三"><span>张老三</span></label>
</div>
<div class="chkBtns">
<button type="button" id="btnAllChk2">全选</button>
<button type="button" id="btnInvert2">反选</button>
<button type="button" id="Sure2">确定</button>
</div>
</div>
</div>

div多选控制的更多相关文章

  1. vue封装一个简单的div框选时间的组件

    记录一下我前段时间封装的一个vue组件吧.技术需要积累,有时间我把我之前写的还不错的组件都开源出来.并尝试vue和react 两种方式的组件封装.今天简单写下鼠标框选div选中效果的封装吧. div框 ...

  2. 前端框架(二)DIV多选复选框框的封装和MySql数据库存取

    图能够包括的寓意和含义是文字不能比拟的,先有一个效果图你也就知道这篇文章的主要内容是关于什么问题的.省去了一大堆文字的累述.看以下这张图: watermark/2/text/aHR0cDovL2Jsb ...

  3. div滚动与控制

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head&g ...

  4. DataGridView里CheckBox实现全选控制

    1. checkbox点击事件 private void myStyleDataGridView1_CellClick(object sender, DataGridViewCellEventArgs ...

  5. 在DIV中如何控制字的位置?

    想到实现字体在div中处于上图(右下角)的位置的话,只需在字体样式上面加上这行代码就好了:style='margin-top:120px;height:20px;float:right;text-al ...

  6. vue - 列表显示(列互相影响,全选控制,更新数据)

    要实现的效果为:全选,且列A列B互相影响,列B勾选则列A一定勾选,列A取消勾选,则相应列B取消勾选 数组 vue中列表渲染有些不是相应式的 var list=[ { a:'aaaa', b:'ddd' ...

  7. 两个div标签,控制标签左边固定,右边自适应(滴滴面试题)

    <div id="lt">1</div> <div id="rt">2</div> #lt{ float:lef ...

  8. JQuery Div层滚动条控制(模拟横向滚动条在最顶端显示)

    想让DIV层滚动条显示在顶端,CSS样式没找到相关属性,于是用2个DIV层来模拟做了一个.经测试IE浏览器上显示并不太美观!不知道是否还有更好的办法可以实现这功能呢?   aaaaaaasssssss ...

  9. Codeforces Round #568 (Div. 2) 选做

    A.B 略,相信大家都会做 ^_^ C. Exam in BerSU 题意 给你一个长度为 \(n\) 的序列 \(a_i\) .对于每个 \(i\in [1,N]\) 求 \([1,i-1]\) 中 ...

随机推荐

  1. Arcgis Server for JavaScript API之自定义InfoWindow

    各位看到这个标题不要嫌烦,因为本人最近一直在研究相关的问题,所以相关文章也只能是这些,同时希望看过我的文章的朋友,我的文章能够给你帮助. 在前面的两篇相关的文章里面,实现InfoWindow是通过di ...

  2. Python之将字符串转换为字节的两种方法

    s = '你是谁' a = bytes(s,'utf-8') # ==> 得出的 a 的结果就是对应的字节 s.encode('utf-8') # ==> 该命令将字符串转换为字节形式

  3. SpringMVC from 表单标签和 input 表单标签

    刚学习很懵  不知道还有springmvc 自己的表单  于是乎就上网查了一下  这个真的好用多啦 刚学习很懵  不知道还有springmvc 自己的表单  于是乎就上网查了一下  这个真的好用多啦 ...

  4. 转换jmeter测试结果jtl

    #bin/sh filelist=`ls jtl` # 将jtl目录的所有文件列表读取并存入变量 for file in $filelist #遍历处理各个文件 do #文件名形如 test2ad.j ...

  5. Python判断字符串编码以及编码的转换

    转自:http://www.cnblogs.com/zhanhg/p/4392089.html Python判断字符串编码以及编码的转换 判断字符串编码: 使用 chardet 可以很方便的实现字符串 ...

  6. js-eval运算符

    js中使用eval运算符需要注意—— eval()只有一个参数 传入的参数是字符串时,才会去解析执行:否则,将直接返回这个参数 作用域与调用它的变量作用域保持一致 返回字符串中最后一个表达式或语句的值 ...

  7. Java String 字符串操作小结

    // 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...

  8. pandas实例美国人口分析

  9. IP 地址子网划分

    1.1 IP地址子网划分 1)容易造成地址浪费 2)容易产生严重的广播风暴 3)会造成路由器转发压力过大 1.2     庞大的网段需要进行子网划分 1)可以有效避免地址浪费 2)有效减少广播风暴的产 ...

  10. saltstack一键部署高可用

    一健推送apache [root@server1 minions]# cd /etc/salt/ [root@server1 salt]# vim master [root@server1 salt] ...