之前也做过有关节点的追加或者删除,但相对下面我要介绍的功能简单多了,都是单个节点的追加或者删除。下面小编将这个功能大概介绍一下。

这个功能的目的是创建多级专区,类似书籍的目录那种的,如下图:

这个功能的具体添加步骤如下:

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>

关于节点追加就分享到这里了,如有错误,欢迎指正!

js动态增加ul节点li及input相关推荐

  1. ligerui_ligerTree_005_动态增加“树”节点

    动态添加ligerTree节点:效果图: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 <%@ page language= ...

  2. js动态增加,删除td,tr,table,div

    js实现的动态添加,删除table内容: 截图如下: 1. 2. 源代码: main.css body {background-image: url(../images/qiantai/bg.png) ...

  3. html循环自动点击事件,js循环遍历ul中li的点击事件,给给选中li添加css

    功能:对于一个ul中固定的li个数,当点击其中一个li时,改变选中li的颜色:同时改变对应的另一个ul中li的颜色 页面初始化的界面: HTML: 其他推荐: 10:21 10:22 10:25 10 ...

  4. js中增加标签删除标签和input修改获取内容

    1.增加标签 创建标签:document.createElement('标签id名') 在某一标签内的最后面插入标签:c.appendChild(b): //即给c加一个孩子b,记住这个孩子是后面进来 ...

  5. jquery 动态为ul添加li

    //获取行业信息,在页面点击父类行业下拉框,查询出所有的父类行业,并加载在下拉框中 $("#parentIndustry").click(function(){ $.ajax({ ...

  6. js动态添加svg节点

    下面贴上完整代码.要注意一点:创建svg节点时,要使用createElementNS函数并传入节点名称的命名空间.否则创建出来的节点默认为html dom而不是svg dom.这样的话,将其appen ...

  7. js动态添加删除节点

    转载于:https://www.cnblogs.com/jiaobaobao/p/6762692.html

  8. js 动态创建注释节点 createComment

    const comment = document.createComment('注释') document.body.appen(commnet)

  9. 如何通过JS动态给li标签添加点击事件并跳转

    如何给li标签添加点击事件 一.HTML demo代码 二.JS动态新增li并绑定点击事件 三.效果图 有很长一段时间没写博客了,最近做了一个类似于榜单的小需求,遇到了一些小问题,姑且简单的记录一下吧 ...

最新文章

  1. 快讯 | 中国胆管癌研究会成员大会暨胆管癌临床研究数据标准发布会在清华大学召开...
  2. 李德毅:“反用驾驶脑”测认知能力,谁说酒驾一定违规?
  3. 廖雪峰python教程pdf-爬虫:把廖雪峰的教程转换成 PDF 电子书
  4. 【OpenCV入门指南】第五篇 轮廓检测 上
  5. bootstraptable获得所有行_“安全超新星”集结出道,共创交通美好未来 2020广汽本田安全中国行首届道路安全创新大赛成功举办...
  6. k8s设置pod privileged权限(特权):securityContext.privileged=true
  7. JDK9的新特性:JVM的xlog
  8. php memcache可存,php使用memcache共享存储session(二)
  9. javascript --- XHR(XMLHttpRequet)对象
  10. [XSY4170] 妹子(线段树上二分)
  11. 图像处理中的通信原理——冈萨雷斯读书笔记(三)
  12. 专心写即时通讯软件争取CSDN认证专家
  13. 今天,我们考大学是为了什么?
  14. 2017 ACM-ICPC南宁网络赛: J. Minimum Distance in a Star Graph(BFS)
  15. 信息系统开发平台OpenExpressApp - ClickOnce智能部署
  16. stylegan2报错“undefined symbol: _ZN10tensorflow12OpDefBuilder6OutputESs”的解决方案
  17. 超燃动态可视化条形图源码及效果图_HTML5大数据可视化效果(一)彩虹爆炸图...
  18. 新面貌,新征程—读《新程序员》有感
  19. SEVERE: Could not contact [localhost:8005] (base port [8005] and offset [0]). Tomcat may not be runn
  20. android p是哪个版本,android p是什么版本

热门文章

  1. 远程操作安卓手机——远控、监控、数据获取
  2. HBase高级配置跟调整(1)
  3. 【扔物线】消失这半年,我去哪了
  4. Linux一键性能测试脚本
  5. 学习笔记——Canopy + K-means的聚类算法
  6. python基础实例 韦玮 pdf_韦玮:Python网络爬虫实战解析
  7. photoshop学习
  8. 【Elasticsearch】ES正确查询文档数不要使用_search的hit而是使用_count
  9. 51nod 2592 修井
  10. 【QT学习】编译错误:FTH: (2592): Fault tolerant heap shim applied to current process. 解决办法