div多选控制
2024-09-29 06:00:50
此点击按钮,弹出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>
最新文章
- RunLoop笔记
- 边工作边刷题:70天一遍leetcode: day 86-2
- 询url包括字符串参数(js高度注意事项)
- 江湖急救篇:slave 复制错误
- java 垃圾回收总结(可达性分析 引用分类
- 【2017-05-18】WebForm的Repeater控件和一些简单控件
- iOS图解多线程
- linux系统磁盘空间满了怎么办看完这篇文章之后就知道怎么解决了
- spring data学习
- 树莓派使用modbus与stm32通信
- 【bug】----- Git上传文件错误导致本地代码丢失
- JSON中的parse和Stringify方法
- HTML 浏览器对象 讲解
- C#常用类操作
- ASP.NET网站权限设计实现(三)——套用JQuery EasyUI列表显示数据、分页、查询
- scrapy爬取验证码登录网页
- 页面生成柱状图 --- D3.js
- 使用JAX-WS(JWS)发布WebService(一)
- BZOJ2438: [中山市选2011]杀人游戏(tarjan)
- cURL范例(包括错误输出和详情输出)