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

本文实例为大家分享使用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案例的效果图:

这里提供自制的 插件 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
目录结构如下:

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的效果如下:

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

Bootstrap学习教程

Bootstrap实战教程

Bootstrap插件使用教程

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

(0)

相关推荐

  • 学习使用Bootstrap输入框、导航、分页等常用组件

    Bootstrap输入框和导航组件 一.下拉菜单 下拉菜单,就是点击一个元素或按钮,触发隐藏的列表显示出来. 按钮和菜单需要包裹在.dropdown 的容器里,而作为被点击的元素按钮需要设置datatoggle="dropdown"才能有效.对于菜单部分,设置 class="dropdown-menu"才能自动隐藏并添加固定样式.设置 class="caret"表示箭头,可上可下. 示例效果: 代码: <body> <!-- 下

  • Bootstrap基本组件学习笔记之input输入框组(9)

    使用input输入框组,可以很容易地向基于文本的输入框添加作为前缀和后缀的文本或按钮. 看下面的例子: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1">

  • Bootstrap输入框组件简单实现代码

    Bootstrap输入框组件的学习代码,供大家参考,具体内容如下 <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE-edge"> <meta name="viewport" content="width=device-width,initial-s

  • Bootstrap3 input输入框插入glyphicon图标的方法

    bootstrap3如何在input输入框插入glyphicon图标呢?插入图标看起来比较醒目,满足用户体验价值观,此功能应用于各大网站. 怎么把图标放在输入框的开头?? <div class="form-group has-feedback"> <label class="col-md-2 control-label" for="username">用户名</label> <div class=&quo

  • bootstrap输入框组件使用方法详解

    本文实例为大家分享了bootstrap输入框组的具体使用方法,供大家参考,具体内容如下 1.基本用法 我们有时需要在输入框一侧或两侧添加额外的元素 这个时候只需要把所有元素都包裹在一个.input-group的div里面就可以 但是每个输入框组只能有一个input <div class="input-group"> <span class="input-group-addon">@</span> <input type=&q

  • bootstrap下拉列表与输入框组结合的样式调整

    输入框组默认是div.input-group 已知可在input表单元素前后加入两类元素[分别是文本和按钮]如下所示: div.input-group-addon{文字或符号} input.form-control div.input-group-btn 其中按钮还可嵌套下拉菜单(包括分裂式下拉菜单) 一.基本用法如下: <div class="input-group"> <span class="input-group-addon">@&l

  • Bootstrap CSS组件之输入框组

    本文实例为大家分享了Bootstrap输入框组的具体代码,供大家参考,具体内容如下 了解table-cell的表格width设置为1%的原因. http://www.tuicool.com/articles/VzUVfyi 通过向输入域添加前缀和后缀的内容,您可以向用户输入添加公共的元素.例如,您可以添加美元符号,或者在 Twitter 用户名前添加 @,或者应用程序接口所需要的其他公共的元素. input-group(input-group-xs,input-group-sm,input-gr

  • Bootstrap输入框组件使用详解

    Bootstrap输入框组件的使用方法,具体内容如下 .input-group--设置div为输入框组: .input-group-lg..input-group-sm..input-group-xs--改变输入框组的尺寸: .input-group-addon--在输入框前或后加入额外内容: .input-group-btn--在输入框前或后加入button或button式下拉菜单组件. 代码: <!DOCTYPE html> <html lang="en">

  • bootstrap布局中input输入框右侧图标点击功能

    使用bootstrap布局可以在input的输入框中添加譬如登录名输入框中的一键清除图标和密码输入框中显示密码的小眼睛图标,如下图: 但是在将图标放入input输入框中,这些小图标是无法获得点击事件的: 那么问题来了,怎样让这些小图标能够获得点击事件呢? 我也不知道,但是可以用一种迂回的方式,来间接的实现该功能. ***重点来了: 解决方案:在小图标的位置上,添加一个看不见的元素,元素的大小正好将小图标覆盖,但是没有背景颜色和边框:相当于给小图标盖了一个透明的被子: 复制代码 代码如下: <di

  • BootStrap点击下拉菜单项后显示一个新的输入框实现代码

    我的页面上有一个下拉菜单,页面上有一个文本输入框,一个图像上传框,文本输入框默认是显示的,而图片上传框是隐藏的. 假设下拉菜单有两项A和B,我想实现这样的效果:点击A时显示文本输入框,隐藏图像输入框:点击B时显示图像上传框,隐藏文本输入框,请问怎么实现? 用firebug调试的时候发现只有在加载html页面的时候几个click函数才会执行,页面加载好后点击下拉菜单项,这些断点都不会被执行,求解是怎么回事. 我的js代码如下(定义在<head>部分中): <script type=&quo

随机推荐