动态生成复选框列表弹性盒子

news2024/11/18 21:27:57

效果图

在这里插入图片描述

1.准备一块盒子区域 id=“checkBoxList” 为例

//样式的简单介绍
style{
overflow:scroll; //让超出div 内容在div区域内以滚动条形式呈现
display: flex;  //搞一个弹性盒子容器
flex-wrap: wrap;align-content: flex-start; // 文本对齐方式 这里是上下元素的内容对齐
}
//这里行内样式举例
<div id="checkBoxList" style="overflow:scroll;height:93%;
display: flex;flex-wrap: wrap;align-content: flex-start; width: 100%;
padding-left: 10px">

 //这块区域待动态放复选框列表
 
</div>

2.准备一块文本域 textArea

<textarea id="textAreaId" rows="16" cols="70" placeholder="请选择复选框加载内容到此处..."
 style=" resize:none; font-size: 25px;font-family:'Microsoft YaHei';
 width: 100%;height: 100% ">这里不要留空白,看完删掉此处,否则鼠标不聚焦文本域左上方</textarea>

3.动态加载复选框列表项

这里加载列表项不允许以 “、”分割,为后续分割符使用

//页面初始化
$.parser.onComplete = function(res) {
	//页面打开执行或者手动点击加载
	dynamicLoadCheckboxList()
}

function dynamicLoadCheckboxList() {
	//清空文本域内容
    document.getElementById("textAreaId").value='';
	//清空盒子里内容
    $("#checkBoxList").html("");
    
    //后台请求复选框内数据列表  --简单一个sql查询语句
    $.post(BASE_PATH + "/xxxController/xxxxxxx.do", {}, function (res) {
        if (res.result == '200') {
          let  checkDataList= res.checkDataList;
            for(let j=0; j < checkDataList.length; j++ ){
            //在盒子中动态加载 checkbox元素列表
                $("#checkBoxList").append(
                    "<label style='font-size: 15px;width: 25%'>"
                    + "<input name='checkItem' type='checkbox'  value="
                    + checkDataList[j].checkName
                    + ">"
                    + checkDataList[j].checkName
                    +"</label>"
                );
                //每四个元素内容一行                
                if( (j+1) % 4 == 0){
                    $("#checkBoxList").append("<br>");
                }
            }     
        } else {
            showMessage(res.Msg);
        }
    }, "JSON");
}

4.对盒子内复选框列表项进行监听


$("#checkBoxList").on('click', function () {
		//获取文本域内容
		let textArea = "textAreaId";
		//复选框选择勾选遍历每一项元素
		$("input[name=checkItem]:checkbox:checked").each(function () {
			//获取当前遍历的复选框值  上边代码中input 内 value="checkName" 就是取这个value
			let str = $(this).val().toString();
			let flag = $(this).context.checked;//取复选框勾选状态 这里是true 
			selectCheckedHandle(flag,str,textArea);
		});
		
		//复选框取消勾选遍历每一项元素
		$("input[name=checkItem]:not(:checked)").each(function() {
			let deletestr = $(this).val().toString();
			unSelectUncheckedHandle(deletestr,checkIdArea);
		});
	});


//遍历选择复选框处理
function selectCheckedHandle(flag,str,checkIdArea) {
    debugger
    let ele = document.getElementById(checkIdArea);
    let reg = /\s+/g;//去除空白区域
    if (typeof ele.value === 'string') {
        ele.value = ele.value.replace(reg, '');
    }
    if (ele.value.lastIndexOf('、') != ele.value.length -1){
        ele.value = ele.value+'、';
    }
    if (typeof str === 'string') {
        str = str.replace(reg, '');
    }

    if (flag) {
        if (str.length > 0) {
            if (ele.value.indexOf(str) == -1) {
                ele.value = ele.value.concat(str+'、');
            } else {
                let flag = undefined;
                let tempArr = ele.value.split("、");
                for (let i = 0; i < tempArr.length; i++) {
                    if (tempArr[i] == str) {
                        flag = true;
                        break;
                    }else {
                        flag = false;
                    }
                }
                if (flag == false){
                    ele.value = ele.value.concat(str+'、');
                }
            }
        }
    }
}

//遍历取消勾选复选框处理
function unSelectUncheckedHandle(deletestr,checkIdArea) {
    debugger
    let ele = document.getElementById(checkIdArea);
    let reg = /\s+/g;
    if (typeof ele.value === 'string') {
        ele.value = ele.value.replace(reg, '');
    }
    if (typeof deletestr === 'string') {
        deletestr = deletestr.replace(reg, '');
    }
    let deleteArr = ele.value.split("、");
    for (let i = 0; i < deleteArr.length; i++) {
        if (deleteArr[i] == deletestr) {
            deleteArr.splice(i,1);
            ele.value = deleteArr.join("、");
        }
    }
}

5.解释字符串处理常用方法无效

为什么没用search(),match(),lastIndexOf()??

因为这些只能查找字符串的子元素的首个位置或者下标位置,但是不容易查找第二个,或许可以搭配正则表达式,进行完全匹配是否是寻找的那个复选框内容,如果不是,可以继续,但是不能确定找到的第二个长度是多长,所以用了数组分割
简单说没有使用好正则表达式,下面是我的思路未解全....后续有空再说

dynamicStr   //为复选框所携带的字符串内容
//首个下标  
 let currentLocat  =  str.indexOf(dynamicStr)  
// 用正则表达匹配,如果是false,继续下一个
while(!RegExp("^" + 'dynamicStr' + "$").test('dynamicStr')){//false的话继续
    currentLocat = str.indexOf(dynamicStr,currentLocat+1);
    if(currentLocat >-1){
//       继续正则比对  
	}
}

生成动态正则表达式 RegExp方法

生成动态 /^dynamicStr$/

console.log( RegExp("^" + 'dynamicStr' + "$"))
//举例
console.log(RegExp("^" + 'dynamicStr' + "$").test('dynamicStr')) //true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文Word排版】使用多级列表设置论文序号

在Word中对论文进行排版 1.设置章节前面的序号 1.1 需求 通常情况下要求如下 一级标题“第一章 XXX”&#xff0c;然后是“1.1 研究意义”&#xff0c; “1.2 研究现状” 之前的处理方式都是手打&#xff0c;并没有借助word的多级列表实现。这次趁着写毕业论文研究了一下。…

虹科案例 | Redis企业版数据库帮助金融机构满足客户需求

传统银行无法提供无缝的全渠道客户体验、无法实时检测欺诈、无法获得业务洞察力、用户体验感较差、品牌声誉受损和业务损失&#xff1f;虹科提供的Redis企业版具有低延迟、高吞吐和高可用性特征&#xff0c;使用Redis企业版数据库&#xff0c;金融机构可以实现即时的客户体验、…

搭建Hexo博客-第3章-Markdown语言介绍及编辑博客

搭建Hexo博客-第3章-Markdown语言介绍及编辑博客 搭建Hexo博客-第3章-Markdown语言介绍及编辑博客 搭建Hexo博客-第3章-Markdown语言介绍及编辑博客 大家好&#xff0c;如果你按照上一篇文章的内容安装并部署了博客&#xff0c;那么现在在你的主页上应该有一篇 Hello World&…

工业上为什么要使用Io-Link?

工业上为什么要使用Io-Link&#xff1f;IO-Link是一种通讯技术&#xff0c;可以把传统的硬件从单纯的输入输出转变为可配置、可编程的网络设备。它可以大大减少有线连接&#xff0c;改善机器人控制和过程控制系统的可读性和可维护性&#xff0c;实现智能化的装置。使用IO-Link可…

科技云报道:2023,云计算的风向变了

科技云报道原创。 2022&#xff0c;是云计算的“分水岭”之年。 与前两年的火热相比&#xff0c;2022年云计算行业实属不太好过&#xff1a;阿里云一季度营收增速创出历史新低&#xff0c;腾讯云的市场份额也被后来者华为云反超&#xff0c;沦为第三。 在此情形下&#xff0c…

rabbitmq菜鸟教程,搭建rabbitmq

一、前言RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写&#xff0c;即需要先安装部署Erlang环境再安装RabbitMQ环境。需加注意的是&#xff0c;读者若不想跟着我的版本号下载安装&#xff0c;可根据两者版本号的对应表&#xff08;下面图示只展示了部分&#xf…

Git(GitHub,Gitee 码云,GitLab)详细讲解

目录第一章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心第二章 Git 安装第三章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.3.1 首次查看&#xff08;工作区没有任何文件&…

2023年美赛ICM问题E:光污染 这题很好做啊!

2023年美赛ICM问题E:光污染 这题很好做啊&#xff01;![在这里插入图片描述](https://img-blog.csdnimg.cn/e918cc6fc9214b53bf4859063bfe56b0.png#pic_center) 我看到DS数模的分析&#xff0c;看似头头是道&#xff0c;实则GouPi不通&#xff0c;我出一个&#xff0c;用于大家…

分享5款办公必备的轻量级软件

今天推荐5款十分小众的软件&#xff0c;知道的人不多&#xff0c;但是每个都是非常非常好用的&#xff0c;有兴趣的小伙伴可以自行搜索下载。 1.PPT演示软件——Prezi Prezi是一种主要通过缩放动作和快捷动作使想法更加生动有趣的演示文稿软件。它打破了传统 Powerpoint的单线…

JavaEE——MyBatis将查询结果集封装进POJO实体类

简单介绍 在之前的我们比较详细的介绍过MyBatis的配置信息的时候&#xff0c;在SQL映射文件中说过我们可以直接将结果集映射到我们的POJO实体类中&#xff0c;省去了我们自己处理查询结果集的时间和代码&#xff0c;接下来我们就来演示将单条数据和多条数据映射到我们POJO实体…

java面试题-阿里真题详解

前言 大家好&#xff0c;我是局外人一枚&#xff0c;最近有不少粉丝去阿里巴巴面试了&#xff0c;回来之后总结不少难题给我&#xff0c;以下是面试的真题&#xff0c;跟大家一起来讨论怎么回答。 阿里一面 1、说⼀下ArrayList和LinkedList区别 ⾸先&#xff0c;他们的底层数…

CSA《企业架构参考指南》实现安全、效率和运营,最佳实践指南!

企业数字化安全转型面临着信息系统架构的选择、判断和组合的困扰。对组织、技术、人才、管理和业务模型等多方面的有机融合和运转构成了架构&#xff0c;而安全是架构高效发挥的基础&#xff0c;二者都是竞争力。 国际云安全联盟CSA发布报告《企业架构参考指南》是国外大型企业…

【Windows】使用Fiddler 工具对手机进行接口监听

目录 工具下载 配置Fidder 手机端获取证书 过滤指定接口 工具下载 CSDN下载地址 其他下载地址 配置Fidder 安装后&#xff0c;打开进入如下界面 在fiddler菜单项选择Tools -> Options -> HTTPS 勾选【Decrypt HTTPS traffic 】 下拉框默认&#xff1a;【from al…

C++复习笔记11

1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而且它的大小会被…

时隔多年再学习Vuex,什么?原来如此简单!

时隔多年再学习Vuex&#xff0c;什么&#xff1f;原来如此简单! start 写 Vue 写了好多年了&#xff0c;少不了和 Vuex 打交道。虽然使用它的次数非常频繁&#xff0c;但是潜意识里总觉得这东西很难&#xff0c;导致遇到与之相关的问题就容易慌张。时至今日&#xff0c;升级版…

CDH 6.3.2 升级Hive 2.3.9

升级背景 DolphinScheduler 3.1.1安装好后&#xff0c;其源码中集成的是Hive 2.1.1&#xff0c;版本太低&#xff0c;当在数据中心连接Hive数据源时报错&#xff0c;所以升级CDH自带的Hive为2.3.9版本。 一、准备工作 1、下载hive2.3.9并解压 下载地址&#xff1a;http://a…

世界前沿3D开发工具HOOPS 2023震撼发布,核心功能再升级

HOOPS SDK简介 HOOPS SDK是全球领先开发商TechSoft 3D旗下的原生产品&#xff0c;专注于Web端、桌面端、移动端3D工程应用程序的开发。长期以来&#xff0c;HOOPS通过卓越的3D技术&#xff0c;帮助全球600多家知名客户推动3D软件创新&#xff0c;这些客户包括SolidWorks、SIEM…

springboot+vue学生考勤请假管理系统

管理员&#xff1a; 系统用户管理&#xff1a;针对系统的管理员用户&#xff0c; 系统用户的基本信息情况&#xff0c;进行管理。 教师管理&#xff1a;可以对教师权限的用户信息进行管理。并且能过实现教师信息的查看&#xff0c;密码修改等。 学生管理&#xff1a;对学生用户…

Unreal Engine06:Actor的实现

写在前面 Actor是可以放进地图的最基本类&#xff0c;这里主要是介绍一下Actor的使用。 一、空间坐标系 1. Actor的变换操作 Actor的变换变换操作主要包括四个部分&#xff1a; 位置&#xff1b;旋转&#xff1b;缩放&#xff1b; 上面三者都是对应三个轴进行变换&#xff1…

IP SAN组网配置

目录一、确认网络连接畅通二、服务器端ISCSI启动器配置1.以root身份登录2.验证是否已安装iSCSI启动器3.安装iSCSI启动器4.启动iSCSI服务5.给iSCSI启动器命名6.扫描目标器7.登录目标器8.将登录目标器行为设置为自启动三、主机多路径配置四、存储配置五、主机挂载背景&#xff1a…