基于Bootstrap使用jQuery实现输入框组input-group的添加与删除


Posted in Javascript onMay 03, 2016

本文实例为大家分享使用jQuery实现输入框组input-group的添加与删除操作,供大家参考,具体内容如下

注意这里要求使用到Bootstrap框架的输入框组,如:

<div class="row"> 
 <div class="col-lg-6"> 
 <div class="input-group"> 
  <span class="input-group-addon"> 
  <input type="checkbox" aria-label="..."> 
  </span> 
  <input type="text" class="form-control" aria-label="..."> 
 </div><!-- /input-group --> 
 </div><!-- /.col-lg-6 --> 
 <div class="col-lg-6"> 
 <div class="input-group"> 
  <span class="input-group-addon"> 
  <input type="radio" aria-label="..."> 
  </span> 
  <input type="text" class="form-control" aria-label="..."> 
 </div><!-- /input-group --> 
 </div><!-- /.col-lg-6 --> 
</div><!-- /.row -->

Demo案例的效果图:

基于Bootstrap使用jQuery实现输入框组input-group的添加与删除

这里提供自制的 插件 inputGroup.js

参数为可以设置 输入框组中中间的控件是文本域还是输入框;以及设置在输入框组右侧的操作的内容。

使用inputGroup.js只要在对应的容器,如div中添加选择器,然后使用jQuery获取该选择器对应的jQuery对象,调用 initInputGroup方法即可。
inputGroup.js

/** 
 * Created by DreamBoy on 2016/4/29. 
 */ 
$(function() { 
 $.fn.initInputGroup = function (options) { 
  //1.Settings 初始化设置 
  var c = $.extend({ 
   'widget' : 'input', 
   'add' : "<span class=\"glyphicon glyphicon-plus\"></span>", 
   'del' : "<span class=\"glyphicon glyphicon-minus\"></span>" 
  }, options); 
 
  var _this = $(this); 
 
  //添加序号为1的输入框组 
  addInputGroup(1); 
 
  /** 
   * 添加序号为order的输入框组 
   * @param order 输入框组的序号 
   */ 
  function addInputGroup(order) { 
   //1.创建输入框组 
   var inputGroup = $("<div class='input-group' style='margin: 10px 0'></div>"); 
   //2.输入框组的序号 
   var inputGroupAddon1 = $("<span class='input-group-addon'></span>"); 
   //3.设置输入框组的序号 
   inputGroupAddon1.html(" " + order + " "); 
 
   //4.创建输入框组中的输入控件(input或textarea) 
   var widget = '', inputGroupAddon2; 
   if(c.widget == 'textarea') { 
    widget = $("<textarea class='form-control' style='resize: vertical;'></textarea>"); 
    inputGroupAddon2 = $("<span class='input-group-addon'></span>"); 
   } else if(c.widget == 'input') { 
    widget = $("<input class='form-control' type='text'/>"); 
    inputGroupAddon2 = $("<span class='input-group-btn'></span>"); 
   } 
 
   //5.创建输入框组中最后面的操作按钮 
   var addBtn = $("<button class='btn btn-default' type='button'>" + c.add + "</button>"); 
   addBtn.appendTo(inputGroupAddon2).on('click', function() { 
    //6.响应删除和添加操作按钮事件 
    if($(this).html() == c.del) { 
     $(this).parents('.input-group').remove(); 
    } else if($(this).html() == c.add) { 
     $(this).html(c.del); 
     addInputGroup(order+1); 
    } 
    //7.重新排序输入框组的序号 
    resort(); 
   }); 
 
   inputGroup.append(inputGroupAddon1).append(widget).append(inputGroupAddon2); 
 
   _this.append(inputGroup); 
  } 
 
  function resort() { 
   var child = _this.children(); 
   $.each(child, function(i) { 
    $(this).find(".input-group-addon").eq(0).html(' ' + (i + 1) + ' '); 
   }); 
  } 
 } 
});

Demo案例——InputGroupDemo
目录结构如下:

基于Bootstrap使用jQuery实现输入框组input-group的添加与删除

index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
 <meta name="viewport" content="width=device-width, initial-scale=1"> 
 <title>输入框组</title> 
 <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css"> 
 <style> 
  /*.input-group-add .input-group { 
   margin: 10px 0; 
  }*/ 
 </style> 
 
 <!--<link href="assets/font-awesome/css/font-awesome.css" rel="stylesheet" />--> 
 <!--[if lt IE 9]> 
 <script src="js/html5shiv.js"></script> 
 <script src="js/respond.min.js"></script> 
 <![endif]--> 
</head> 
<body> 
 <div class="container"> 
  <div class="input-group-add"> 
   <!--<div class="input-group"> 
    <span class="input-group-addon"> 1 </span> 
    <!?<input type="text" class="form-control" aria-label="...">?> 
    <textarea class="form-control"></textarea> 
    <span class="input-group-addon"> 
     <button class="btn btn-default" type="button"> + </button> 
    </span> 
   </div>--> 
  </div> 
 </div> 
 
 <script src="js/jquery-1.11.1.min.js"></script> 
 <script src="js/bootstrap.min.js"></script> 
 <script src="inputGroup.js"></script> 
 <script> 
  $(function() { 
   $('.input-group-add').initInputGroup({ 
    'widget' : 'textarea', //输入框组中间的空间类型 
    /*'add' : '添加', 
    'del' : '删除'*/ 
   }); 
  }); 
 </script> 
</body> 
</html>

如果输入框组中的中间控件需要input,则可以设置:

$('.input-group-add').initInputGroup({ 
    'widget' : 'input', //输入框组中间的空间类型 
    /*'add' : '添加', 
    'del' : '删除'*/ 
   });

或者不进行设置,因为默认中间控件为input。
中间控件为input的效果如下:

基于Bootstrap使用jQuery实现输入框组input-group的添加与删除

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript文件加载管理简单实现方法
Jul 25 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
Sep 20 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
Mar 30 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
vuex的module模块用法示例
Nov 12 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
JQuery的Pager分页器实现代码
May 03 #Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
May 03 #Javascript
JQuery核心函数是什么及使用方法介绍
May 03 #Javascript
jquery对象访问是什么及使用方法介绍
May 03 #Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 #Javascript
javascript的BOM
May 03 #Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 #Javascript
You might like
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
详解php中的implements 使用
2017/06/13 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
盛大二次面试题
2016/11/18 面试题
超强台风观后感
2015/06/09 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang