js动态增加ul节点li及input
来源:互联网 发布:win10edge卸载知乎 编辑:程序博客网 时间:2024/06/05 08:05
之前也做过有关节点的追加或者删除,但相对下面我要介绍的功能简单多了,都是单个节点的追加或者删除。下面小编将这个功能大概介绍一下。
这个功能的目的是创建多级专区,类似书籍的目录那种的,如下图:
这个功能的具体添加步骤如下:
1、创建根专区
首先,在上图input框中输入一级专区的名称,如果符合需求将展示在页面上,如下图:
如果只添加一级专区,直接点击‘创建’按钮即可。
本段代码如下:
<div class="veri"><p id="verip"><input type="text" value="" id="mucharea" data-id="input" defvalue="请输入一级专区的名称"><input type="button" value="确定" id="arersure"><span id="plhoder" style="color:#ccc; margin:0px 0px 0px 25px;">所有专区名称均限30个字符</span></p></div><div class="verizong" style="display:none;"><div class="verione"><input type="button" value="" id="firsearea" ><a class="polidy">编辑</a><a href="javascript:;" class="bigrout">删除</a><a class="add" id="addBtn" this-id="add">添加子专区</a></div><div class="veribig"><div id="veritwo"><ul class="zqBar_cont"> <div class="onezq"> <ul class="two"> <!-- 子专区将追加到这里 --> </ul> </div> </ul></div></div><p id="ps" style="display:none;"> <input type="button" id="vericreat" value="创建"><span id="tshitwo">请确保所有子专区名称均已填写再创建</span></p></div><script type="text/javascript">//创建一级根专区$('#arersure').click(function(){var mucharea = $('#mucharea').val();if(mucharea == "" || mucharea =="请输入一级专区的名称"){ //一级根专区为空$('#plhoder').text('专区名称不可为空').css('color','red');}else{//专区名称校验$.post("{:U('admin/AppsList/checkStrNum')}",{name:mucharea,num:1},function(data){ //长度校验if(data==1){$('#plhoder').text('仅限30个字符').css({'color':'red'});return false;}else{$.post("{:U('admin/AppsList/checkRootName')}",{groupname:mucharea},function(data){ //名称是否重复if(data==1){$('#plhoder').text('此名称已经存在').css({'color':'red'});return false;}else{ //创建成功arrname[0] = mucharea;$('#plhoder').text('所有专区名称均限30个字符');$('#firsearea').val(mucharea);$('.veri').hide();$('.verizong').show();$('.veribig').hide();$('#ps').show();}})}})}})</script>
2、添加子专区
如果想要继续添加下级子专区,则点击‘添加子专区’按钮,会弹出一个添加的弹出框,效果如下:
该弹框是一个div,在里面追加input,默认情况下,会追加一个input,代码如下:
<div class="popUP"> <h5>添加子专区<span class="close">X</span></h5> <p>请按Enter键输入多个子专区名称(每行一个,共10行,每个仅限30字符)</p> <div class="pupCont"> </div> <div class="btns"> <input type="button" id="sureBtn1" value="确认"><input type="button" id="cancelBtn" value="取消"> </div></div><script type="text/javascript">$('#addBtn').click(function(){ index = 1; //用于页面取值时,判断层级 $('.popUP').Popss({PopName:'.popUP',closeName:''});$('body').css({"overflow":"scroll","overflow-y":"hidden"});$('.pupCont').find('input').val('').eq(0).show().siblings().remove();var $input = $('<input type="text" clas="inputTits"><span></span></br>'); $('.pupCont').append($input); $input.focus();})$('.pupCont').on('keyup','input',function(ev){if(ev.keyCode == 13){ //enter事件var inputTxt = $(this).val();var inputTxtLen = inputTxt.replace(/[\u4E00-\u9FA5]/g,'aa').length;createInput(); //追加input$(this).blur();if(inputTxtLen>30){ //判断input输入框中字符的长度$(this).next().text('仅限30个字符');return false;}else{$(this).next().text('');}}})function createInput(){ var $input = $('<input type="text" clas="inputTits"><span></span></br>'); inputlen = $('.pupCont').find('input').length; if(inputlen >= 10){ //判断input的长度,最大允许10个 return false; }else{ $('.pupCont').append($input); $input.focus(); } }</script>
上图弹框中,如果点击‘取消’或者右上角‘X’按钮,则情况弹框中的内容;如果点击‘确定’按钮,则追加这些专区到页面,如下:
<script type="text/javascript">$('.close,#cancelBtn').click(function(){//取消操作var mucharea = $('#mucharea').val(); $('.popUP').hide(); $('.pupCont').empty(); if(index == 1){ arrname = []; arrname[0] = mucharea; }else{ for(i=0;i<num;++i){arrname.splice(arrname.length - 1,1)} }$(".PopsBg").remove();$('body').css({"overflow":"scroll","overflow-y":"auto"});})$('#sureBtn1').click(function(){ //确定操作 insertSection();})function insertSection(){li = '';var flag = 1; var obj; num = 0; var addStr = '<span><a href="javascript:;" class="polidys">编辑</a><a href="javascript:;" class="delcel">删除</a><a href="javascript:;" class="add">添加子专区</a></span></li>'; if(index == 1){ obj = $('.two'); }else if(index == 2){ var $three = $('<ul class="three"></ul>'); target.parent().append($three); obj = target.next(); }else{ var $four = $('<ul class="four"></ul>'); target.parent().append($four); obj = target.next(); addStr = '<span><a href="javascript:;" class="polidys">编辑</a><a href="javascript:;" class="delcel">删除</a></span></li>'; } var $input = $('.pupCont').find('input'); $input.each(function(index,item){ k++; var str = $.trim($(this).val()); if(str != ""){ li += '<li id="list_'+k+'">' + '<em>'+str+'</em>' + addStr; } var len = arrname.length; var inputTxt = $(this).val();var inputTxtLen = inputTxt.replace(/[\u4E00-\u9FA5]/g,'aa').length; for(i=0;i<len;++i){ if(inputTxtLen > 30){ flag = 0; $(this).next().text('仅限30个字符'); for(i=0;i<num;++i){arrname.splice(arrname.length - 1,1)} return false; }else{ $(this).next().text(''); } if(str == arrname[i] && str != ''){ flag = 0; $(this).next().text('专区名称不能相同'); for(i=0;i<num;++i){arrname.splice(arrname.length - 1,1)} return false; }else{ $(this).next().text(''); } } flag = 1;num++;arrname[len] = str; }) if(flag){ obj.append(li); $('.popUP').hide(); $('.pupCont').empty();$(".PopsBg").remove();$('.pupCont').find('input').val('').eq(0).show().siblings().remove();$('body').css({"overflow":"scroll","overflow-y":"auto"}); } $('.veribig').show();$('#ps').show(); }</script>
追加后效果如下:
如果想要添加三级或者四级的子专区类似步骤2,效果如下:
3、获取页面上的数据
如果有二级以下的专区,则获取如下:
<script type="text/javascript">var len = $(".two").children().length; var erjiarr = [];var reg=/,$/gi;//去掉逗号var regs=/\/$/gi;//去掉斜线for(i=0;i<len;++i){var erjiname = '';erjiname += $(".two").children().eq(i).children('em').text();var sanji = $(".two").children().eq(i).attr('id');var sanlen = $("#"+sanji).find('.three').children().length;if(sanlen){erjiname += '-';//二级和三级之间用中横线隔开}for(k=0;k<sanlen;++k){erjiname += $("#"+sanji).find('.three').children().eq(k).children('em').text();var siji = $("#"+sanji).find('.three').children().eq(k).attr('id');var silen = $("#"+siji).find('.four').children().length;if(silen){erjiname += '(';//三级和四级之间用括号隔开}for(j=0;j<silen;++j){erjiname += $("#"+siji).find('.four').children().eq(j).find('em').text() + ",";//四级之间用逗号隔开}erjiname=erjiname.replace(reg,"");if(silen){erjiname += ')';}erjiname += '/';//三级之间用斜线隔开}erjiname=erjiname.replace(regs,"");erjiarr[i] = erjiname;}</script>
关于节点追加就分享到这里了,如有错误,欢迎指正!
2 0
- js动态增加ul节点li及input
- JS动态增加删除UL节点LI及相关内容
- JavaScript动态增加删除UL节点LI及相关内容
- js 根据节点增加ul列表li内容
- UL里面动态增加Li
- 动态生成ul li
- js中动态添加ul列表中的li
- HBuilder动态的向<ul></ul>中插入<li></li>
- JS实现动态增加和删除li标签行
- js遍历li并动态更换下级节点的样式
- jQuery动态增加删除li及事件绑定
- jQuery ul li实现动态广告
- jquery 动态为ul添加li
- javaScript学习-动态为ul添加li
- 页面给<ul>动态添加<li>
- JS组装 HTML片段 列表 ul li
- div ul li 嵌套后如何解决增加多个li后ul高度自适应问题
- UL及LI元素的控制 - HttpConnTestDemo
- Budgetvm 搭建vps
- NSString 和 NSMutableString 的用法小结
- OCP-1Z0-051-2015-44题
- iOS 伪亮度调节/控制
- PageAdmin企业网站系统——政府及大中型企业网站建设的利器
- js动态增加ul节点li及input
- 超赞!聊聊Web App、Hybrid App与Native App的设计差异
- UI -知识点回顾 二
- 支持不同的屏幕
- UVa 11605 - Lights inside a 3d Grid
- Pattern和Matcher
- ecstore-改善验证码
- Java中equals和==的区别
- UIImageView常用属性