angular表单


angular的表单,点击确定进行创建,支持批量创建,表单验证有样式提醒;

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <link rel="stylesheet" href="./../node_modules/bootstrap/dist/css/bootstrap.css">
    <style>
        fieldset{
            border:1px solid black;
            padding:10px;
            position:relative;
        }
    </style>

    <script src="./../node_modules/angular/angular.js"></script>
    <script src="form.controller.js"></script>
    <body ng-app="app">
    <!-- 控制器 -->
        <div class="row form-group"  ng-controller="form" style="width:50%;margin:100px auto">
            <!-- 表单 -->
            <form name="myForm">
                <!-- 点击添加策略 -->
                <button class="btn btn-primary" style="display:block;margin:5px auto;width:80%" ng-click="addScale()">
                <span class="fa fa-plus" ></span>添加策略
                </button>
                <p ng-show="data.type==‘1‘&&expand.length==0 || data.type==‘2‘&&narrow.length==0" style="color:#c82e29;text-align:center">相同策略只能创建一次</p>
                <!-- 循环生成 -->
                <fieldset class="margin-10" ng-repeat="x in rules">
                    <!-- 点击关闭当前块 -->
                    <span class="glyphicon glyphicon-remove" style="position:absolute;cursor:pointer;top:10px;right:10px;z-index:1" ng-click="reduce($index)"></span>
                    <!-- ng-class="{类名:bool,‘类名‘:bool2}" bool值表达式可以用{{}},myForm.inputName.$dirty是否修改,$valid验证是否通过; -->
                    <div class="col-md-5 margin-bottom-10" ng-class="{‘has-success‘:myForm.{{‘envs_name‘+$index}}.$valid,‘has-error‘:myForm.{{‘envs_name‘+$index}}.$invalid && myForm.{{‘envs_name‘+$index}}.$dirty}">
                        <label class="control-label">
                            <span class="symbol required"></span>请选择策略
                        </label><br>
                        <select class="form-control"  style="width:100%" required name="{{‘envs_name‘+$index}}" ng-model="x.metric">
                            <option value="{{x}}" ng-repeat="x in expand">{{formatMetric(x)}}</option>
                        </select>

                    </div>
                    <div class="col-md-2" style="padding:0">
                        <div style="margin-top:30px" class="text-center">{{data.type =="1"?"大于或等于":"小于或等于"}}</div>
                    </div>
                    <div class="col-md-5 margin-bottom-15" ng-class="{‘has-success‘:myForm.{{‘envs_value‘+$index}}.$valid,‘has-error‘:myForm.{{‘envs_value‘+$index}}.$invalid && myForm.{{‘envs_value‘+$index}}.$dirty}">
                        <label class="control-label"><span class="symbol required"></span>百分比</label><br>
                        <input class="form-control" style="width:100%" step="0.1" required ng-pattern="/^\d+(\.\d+)+$/" max="100"  type="number" name="{{‘envs_value‘+$index}}" ng-model="x.threshold_value" >
                        <span ng-show="myForm.{{‘envs_value‘+$index}}.$invalid && myForm.{{‘envs_value‘+$index}}.$dirty" style="color:#c82e29">请输入0-100的小数</span>
                    </div>

                    <div class="col-md-4 margin-bottom-10" ng-if="data.type ==1" ng-class="{‘has-success‘:myForm.{{‘envs_priority‘+$index}}.$valid,‘has-error‘:myForm.{{‘envs_priority‘+$index}}.$invalid && myForm.{{‘envs_priority‘+$index}}.$dirty}">
                        <label class="control-label">
                            <span class="symbol required"></span>优先级
                            <br>
                        </label>
                        <input class="form-control" style="width:100%" required type="number" name="{{‘envs_priority‘+$index}}" ng-model="x.priority">
                    </div>
                    <div class=" margin-bottom-10" ng-class="{‘col-md-4‘:data.type==1,‘col-md-6‘:data.type==2,‘has-success‘:myForm.{{‘envs_init‘+$index}}.$valid,‘has-error‘:myForm.{{‘envs_init‘+$index}}.$invalid && myForm.{{‘envs_init‘+$index}}.$dirty}">
                        <label class="control-label"><span class="symbol required"></span> 最{{data.type==1 ? "大":"小"}}容器数量</label><br>
                        <input style="width:100%" required type="number" min=‘1‘ name="{{‘envs_init‘+$index}}" ng-model="x.container_num">
                        <span ng-show="myForm.{{‘envs_init‘+$index}}.$invalid && myForm.{{‘envs_init‘+$index}}.$dirty" style="color:#c82e29">请输入不小于1的整数</span>
                    </div>
                    <div class=" margin-bottom-10" ng-class="{‘col-md-4‘:data.type==1,‘col-md-6‘:data.type==2,‘has-success‘:myForm.{{‘envs_step‘+$index}}.$valid,‘has-error‘:myForm.{{‘envs_step‘+$index}}.$invalid && myForm.{{‘envs_step‘+$index}}.$dirty}">
                        <label class="control-label"><span class="symbol required"></span> 每次扩缩容数量</label><br>
                        <input class="form-control" style="width:100%" min=‘1‘ required type="number" name="{{‘envs_step‘+$index}}" ng-model="x.step">
                        <span ng-show="myForm.{{‘envs_step‘+$index}}.$invalid && myForm.{{‘envs_step‘+$index}}.$dirty" style="color:#c82e29">请输入不小于1的整数</span>
                    </div>

                </fieldset>

            </form>
            <button class="btn btn-primary btn-o pull-right" ng-click="ok(rules,myForm)">确定</button>
            <button class="btn btn-primary btn-o pull-right" ng-click="cancel()">取消</button>
        </div>
    </body>
</html>

下面是js代码

var myModule = angular.module(‘app‘, []);
console.log(myModule);
myModule.controller("form",["$scope",function($scope){
    //数据初始化
    $scope.rules=[{}];
    $scope.data={
        type:1,
    }
    $scope.expand = [ "memory.usage.percent","cpu.usage.percent","thread.usage.number"]

    //点击添加策略,增加表单块
    $scope.addScale = function(){
        $scope.rules.push({});
    }
    //点击X,删除当前块
    $scope.reduce = function($index){
            $scope.rules.splice($index,1);
            if($scope.rules.length === 0){
                $scope.addScale();
            }
    }

    $scope.formatMetric = function(metric) {
            switch (metric) {
                case "memory.usage.percent":
                    return "内存平均值";
                case "cpu.usage.percent":
                    return "CPU 平均值";
                case "thread.usage.number":
                    return "JVM 线程数";
                default:
                    return ""
            }
        };
       //点击确定
     $scope.ok = function(myForm){
          if(myForm.$invalid){
                return ;
            }
            //..
     }

}])

最后效果:点击添加策略,会增加一块策略,右上角X点击关闭,当表单验证不通过时,显出红色,通过绿色,验证不通过点击确定不发送请求;

时间: 2024-08-23 18:47:37

angular表单的相关文章

Angular表单验证

在使用 AngularJS 进行开发的时候,表单填写是一个很常见的需求,而表单验证又是比较让人头疼的部分,本文对此做一个总结. 在 Angular 的视图中使用的 form 已经不是 HTML 中的普通 form 了,而是一个被 Angular 封装过的指令.它可以完成普通 form 无法实现的功能,比如 form 嵌套,而且自带强大的验证功能. Angular 在对表单进行校验的时候会使用 ngModelController 上的属性,如果不设置 ng-model,则 Angular 无法知道

angular表单验证实例----可用的代码

前段时间,公司做一个单页面,就是一个表单验证,早开始在菜鸟教程上关注了angular,所以下派上用场了 angular里面对于表单验证,设置了很多指令. 也就是说不用自己写一些逻辑,直接绑定指令就行. ng-app     启动你angular的模块 ng-controller 控制器,启动你angualr里面的逻辑代码作用在页面上 ng-options  循环你select里面的option标签,很好用的 ng-submit,表单提交执行的 novalidate  表单form配合后期检测的

简话Angular 05 Angular表单验证

一句话: 可以使用所有html5表单验证功能,同时Angular还增强了部分验证,支持动态验证 1. 上源码 1 <div ng-controller="ExampleController"> 2 <form action="" name="exampleForm"> 3 <label>姓名(required ng-minlength=1 ng-maxlength=3): </label> <

Angular表单的本地校验和远程校验

AngularJS Form 进阶:远程校验和自定义输入项 表单远程校验 HTML代码: <!doctype html> <html ng-app="form-example1"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link href="../bootstrap/

简单的angular表单验证指令

<html ng-app="myApp"> <head> <meta charset="UTF-8"> <title>test表单验证</title> <script type="text/javascript" src="lib/angular/angular.js"></script> <script type="text/

从浅入深剖析angular表单验证

最近手上维护的组件剩下的BUG都是表单验证,而且公司的表单验证那块代码经历的几代人,里面的逻辑开始变得不清晰,而且代码结构不是很angular. 是很有必要深入了解表单验证. <body ng-controller="MainController"> <form name="form" novalidate="novalidate"> <input name="text" type="e

angular 表单操作

一直没有使用angular的表单验证以及表单提交数据.只是用的input绑定值,另外最近的设计都是点击后显示错误,而不是自动显示错误.所以错误显示一直也没有做.而表单的非法验证可以直接解决这个问题.angular 5最近更新的跟表单验证有关.导致我想研究下angular的表单操作.把web移动端的表单验证添加上.而我的随笔基本都写我不熟悉,我熟悉的,感觉舒适的都不会写. 通过keyup事件,获取用户输入.所有标准DOM事件对象都有一个target属性,引用触发该事件的元素.event.targe

ngVerify - 更高效的 angular 表单验证

ngVerify v1.5.0 a easy Angular Form Validation plugin.简洁高效的__angular表单验证插件__ See how powerful it.看看它有多强大 动态校验 自动关联提交按钮 多种 tip 校验消息提示 不只校验 dom 元素值,还可以校验 ngModel 数据模型 支持任意类型表单元素,甚至可以校验非表单元素 提供 type 类型校验模板,你几乎不需要定校验规则 提供自定义规则 支持第三方组件校验 Show HOME - 首页 DE

angular表单知识点

原文 https://www.jianshu.com/p/c772d143e1fc 大纲 1.对表单的理解 2.模板驱动表单(Template Driven Forms) 3.响应式表单(Reactive Forms ) 4.响应式表单和模板驱动表单的区别和联系 5.FormControl.FormGroup--angular基础的表单对象 对表单的理解 1.事实证明,表单最终可能是非常复杂的.原因如下: 1.1.表单输入意味着需要在页面和服务器端同时修改这份数据: 1.2.修改的内容通常要在页