AngularJS:实现动态添加输入控件功能

2023-05-16

AngularJS:实现动态添加输入控件功能

功能要求如下:
1.    点击加号可以增加输入框。
2.    点击减号可以减少输入框。
3.    当输入框只有一个的时候,不能再减少输入框。
效果图如下:
只有一个输入框

有多个输入框


要实现这个功能,可以用angularJS实现。实现步骤如下:
1.    在HTML中引入script


<script type='text/javascript' src='path/to/angular.min.js'></script>  

2.    HTML部分代码如下:


 1 <div class="form-group" ng-controller="SendSafeMessageController">
 2     <label class="col-md-2 control-label">答复内容:</label>
 3     <div class="col-md-10">
 4         <div ng-repeat="reply in fchat.replies">
 5             <div class="form-group">
 6                 <div class="col-md-12">
 7                     <div class="col-md-1">
 8                         <label for="reply{{$index + 1}}">回答{{$index + 1}}</label>
 9                     </div>
10                     <div class="col-md-9">
11                         <input type="text" class="form-control" ng-model="reply.value"
12                                id="reply{{$index + 1}}" name="reply{{$index + 1}}" />
13                     </div>
14                     <div class="col-md-2 img-link">
15                         <a href="" ng-click="fchat.incrReply($index)">
16                             <img src="/images/plus.png" alt="plus" width="30px" height="30px" />
17                         </a>
18                         <a href="" ng-click="fchat.decrReply($index)" ng-show="fchat.canDescReply">
19                             <img src="/images/minus.png" alt="minus" width="30px" height="30px"/>
20                         </a>
21                         <img src="/images/dis_minus.png" alt="minus" width="30px" height="30px"
22                              ng-show="!fchat.canDescReply"/>
23                     </div>
24                 </div>
25             </div>
26         </div>
27         <input type="hidden" id="replies" name="replies" value="{{fchat.combineReplies()}}" />
28     </div>
29 </div>  


SendSafeMessageController.js代码如下:


 1 var ftitAppModule = angular.module('ftitApp', []);
 2 
 3 ftitAppModule.controller('SendSafeMessageController',
 4     function ($scope, $log) {
 5         $scope.fchat = new Object();
 6         $scope.fchat.replies = [{key: 0, value: ""}];
 7         // 初始化时由于只有1条回复,所以不允许删除
 8         $scope.fchat.canDescReply = false;
 9 
10         // 增加回复数
11         $scope.fchat.incrReply = function($index) {
12             $scope.fchat.replies.splice($index + 1, 0,
13                 {key: new Date().getTime(), value: ""});   // 用时间戳作为每个item的key
14             // 增加新的回复后允许删除
15             $scope.fchat.canDescReply = true;
16         }
17 
18         // 减少回复数
19         $scope.fchat.decrReply = function($index) {
20             // 如果回复数大于1,删除被点击回复
21             if ($scope.fchat.replies.length > 1) {
22                 $scope.fchat.replies.splice($index, 1);
23             }
24             // 如果回复数为1,不允许删除
25             if ($scope.fchat.replies.length == 1) {
26                 $scope.fchat.canDescReply = false;
27             }
28         }
29 
30         $scope.fchat.combineReplies = function() {
31             var cr = "";
32             for (var i = 0; i < $scope.fchat.replies.length; i++) {
33                 cr += "#" + $scope.fchat.replies[i].value;
34             }
35             cr = cr.substring(1);
36             $log.debug("Combined replies: " + cr);
37 
38             return cr;
39         }
40     }
41 );  


需要注意的是,由于输入框是动态添加,所以事先我们是不知道到底有多少数据是可以传给服务器的,所以在js中用了一个combineReplies函数来将所有的输入框内容合并成一个数值,用#作为分隔符分开,然后放到一个hidden输入框中来传值给服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:实现动态添加输入控件功能 的相关文章

随机推荐

  • shell编程、ssh-root量产、ping-IP脚本操作 问题-flag

    1 su root Authentication failure问题的解决 su su root 命令不能切换root xff0c 提示su Authentication failure 只要你sudo passwd root过一次之后 x
  • linux编译器的下关于gcc、g++、make和CMake几个概念的区别

    1 什么是gcc g 43 43 首先说明 xff1a gcc 和 GCC 是两个不同的东西 GCC GNU Compiler Collection GUN编译器集合 xff0c 它可以编译C C 43 43 JAV Fortran Pas
  • linux-vim编辑工具的基础的常用操作 小结

    1 设置行号 xff08 临时设置和永久性设置 xff09 临时设置 如果要显示该文件的所有行号 xff0c 则需要在vim的命令模式下输入 set nu 设置显示行号 xff0c 等同setnumber set nonu xff08 取消
  • 内网离线安装vscode插件

    一 官网下载vscode安装包 xff08 https code visualstudio com xff09 下载之后将安装包拷贝到需要的电脑进行安装并创建桌面快捷方式 二 vscode插件官网 xff08 https marketpla
  • usb/uart转网口模块选型设计 小结

    选型原则 通讯速率尽量可能快 xff0c 工作温度必须是工业级的 xff0c 成本尽量可能低 xff1b 保证用户可操作空间较大 1usb转网口 AX88772BLI xff0c ZLAN1003 xff0c IP101GRI xff08
  • Git bash基础操作指令 小结

    1 常用git指令 git的安装配置 xff08 只有初次使用需要配置 xff09 用户名和邮件 git config global user name 34 noxue 34 git config global user email ad
  • linux-ARM开发板--嵌入式开发平台-选型

    最近有一个项目以前一直在用工控机实现 xff0c 现在需要优化功能 缩减成本 xff0c 故有寻找linux ARM开发板的需求 xff1b 后期有很大可能还会自己会画PCB板 内核裁剪等设计的需求 xff1b 1 根据需求 xff0c 限
  • linux 线程与进程 -2-多线程应用编程

    多线程的管理 多线程的互斥锁和条件变量的使用 xff01 什么是进程 进程 xff08 process xff09 是一个已经开始执行但还没终止的程序实例 Linux系统下使用ps 命令可以查看到当前正在执行的进程 每个进程包含有进程运行环
  • 基于ARM开发板或linux工控机的远程操作的小结

    需求 xff1a xff08 1 xff09 黑龙江现场A处有一个一直在执行任务的工控机 xff08 或ARM板 xff09 xff0c 该板子处在一个局域网192 xxx 2 1网段 xff0c 局域网可以联网 xff1b xff08 2
  • linux-Ubuntu server输出.csv文件方法 小结

    导语 xff1a 在ARM上或在其他芯片上做开发 xff0c 有时候会有这样的需求 xff0c 将你工控机 开发板或者你的设备采集出来的数据做成一个exc列表 xff1b 最简单的方式就是用数据直接输出为 txt文件 xff0c 但是这样并
  • arm板/工控机 连接外网 小结

    arm板外网连接的总结 1 判断自己的开发板或者虚拟机是否连接外网的方式非常简单 直接ping外网的一个ip即可 xff0c 比如ping百度 2 如果arm开发板ping外网不同有几个思路去修复 xff08 1 xff09 先检查你的外网
  • Cannot access androidx.lifecycle.HasDefaultViewModelProviderFactory 警告

    项目androidx中 报警告 Cannot access androidx lifecycle HasDefaultViewModelProviderFactory 但是不影响运行 xff0c 解决方法 xff1a ViewModel a
  • 一些简单的shell脚本实例

    自己写了一下小的shell实例 xff0c 虽然很小 xff0c 但所有的大的程序都是由小的模块堆积起来的 xff0c 程序员一定要懂得一种脚本的书写 xff0c 而我 xff0c 只会在linux下工作 xff0c 所以就只能写linux
  • 房子装修工程师CSS(七): 伪元素 ::before 和 ::after的用法介绍

    一 W3C的解释用一句话概括 xff1a 单冒号 用于CSS3伪类 xff0c 双冒号 用于CSS3伪元素 单冒号写法兼容性比较强 可支持解析的浏览器较多 双冒号的写法只支持较新的主流浏览器 二 基础理论 before和 after 是用来
  • SSM框架整合时,无法正确连接数据库

    SSM框架整合时 xff0c 无法正确连接数据库 报错如下所示 xff1a 报错信息 xff1a Caused by java sql SQLException Access denied for user Miomiaomiao 64 l
  • 房子装修工程师CSS(八)伪类选择器

    一 伪类选择器 xff08 一 xff09 Pseudo Classes Selectors 伪类选择器 E not s E root E target E first child E last child E only child E n
  • 房子装修工程师CSS(九)伪类选择器

    xff08 九 xff09 E first of type 意思是 xff0c 在父元素下面寻找 第一个所匹配的子元素 下面的ul 和li xff0c 在ul 里面找到第一个li xff08 十 xff09 E last of type 在
  • 国际化时配置时配置struts.custom.i18n.resources常量三种方法:

    假设要定义配置一个 basename为globalMessages的strut custom i18n resources常量 1 在属性文件struts properties中定义 xff1a 在属性文件中定义basejname stru
  • java中return用法总结

    Java中return用于方法 xff0c 两个作用 xff1a xff08 1 xff09 返回方法指定类型的值 xff08 这个值总是确定的 xff09 xff0c 也可以是对象 xff08 2 xff09 方法的结束 两种形式 xff
  • AngularJS:实现动态添加输入控件功能

    AngularJS xff1a 实现动态添加输入控件功能 功能要求如下 xff1a 1 点击加号可以增加输入框 2 点击减号可以减少输入框 3 当输入框只有一个的时候 xff0c 不能再减少输入框 效果图如下 xff1a 只有一个输入框 有