此点击按钮,弹出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. 【BZOJ2438】[中山市选]杀人游戏 Tarjan+概率

    [中山市选]杀人游戏 Tarjan+概率 题目描述 ​ 一位冷血的杀手潜入\(Na\)-\(wiat\),并假装成平民.警察希望能在\(N\)个人里面,查出谁是杀手.警察能够对每一个人进行查证,假如查 ...

  2. 使用esp32-Arduino+PubSubClient+mqtt 上传数据到中移动OneNet

    使用esp32-doit-dev-v1开发板,测试mqtt协议, 发布(publish)到onenet 平台.注意:1.使用的mqtt arduino 客户端是 pubsubclient 库.其默认是 ...

  3. c语言定义指针类型需注意事项

    1)在定义说明语句中,指针变量名之前的星号“*“是指针变量的修饰符,也就是说它所修饰的变量是指针变量. 2)指针变量是用它们所指向的对象类型来区分的.如定义 int *ip,类型int并不是指针的类型 ...

  4. 记录Leetcode 鸡蛋掉落 的思路

    前言 首先看一下这个题目,是Leetcode的第887题"鸡蛋掉落": 你将获得 `K` 个鸡蛋,并可以使用一栋从 `1` 到 `N` 共有 `N` 层楼的建筑. 每个蛋的功能都是 ...

  5. POJ 3067 Japan (树状数组 && 控制变量)

    题意: 西海岸和东海岸有分别有n (1~n)个和m (1~m)个城市, 两个海岸的城市之间有k条公路连通, 公路会相交, 现在给出城市和公路的信息问你由这些公路组成的复杂交通有多少个交点 (如果两个条 ...

  6. django中关于静态文件的引入(这边是指边主要是jquery和bootstrap

    一.  创建文件夹 首先在项目的根目录中新建一个文件夹,这个文件夹的名称最好以static命名 二.   修改配置 在项目的settings文件中,拉倒最下面,可以看到 STATICFILES_DIR ...

  7. sqlserver 数据库阻塞和死锁

    参考原文:http://blog.csdn.net/ha196200/article/details/44985597 (1) 数据库阻塞: 假设第一个连接T1占有且没有释放资源,第二个连接T2请求同 ...

  8. bootstrap多选框

    不多说,先上图片 本多选框是用的bootstrap的样式为基础,将弹出框css改造,然后自己写的js得到. 下面为全部页面的代码,需要的可以自己改动js,得到自己需要的效果 <!DOCTYPE ...

  9. my06_sysbench install for mysql 并初始化表数据

    sysbench安装 ************************************************************** 安装sysbench依赖包 rpm -q autom ...

  10. vue 父组件调用子组件的函数

    子组件 <template> <div> child </div> </template> <script> export default ...