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/css/bootstrap.min.css" rel="stylesheet" media="screen">
        <script src="../angular-1.0.3/angular.js"></script>
        <script src="FormValidation.js"></script>
    </head>
    <body>
        <div>
            <form name="myForm" class="css-form" novalidate>
                <div>
                    整数(0-10):
                    <input type="number" ng-model="size" name="size" min="0" max="10" integer/>
                    {{size}}
                    <br/>
                    <span ng-show="myForm.size.$error.integer">不是合法的整数!</span>
                    <span ng-show="myForm.size.$error.min || myForm.size.$error.max">
                        数值必须位于0到10之间!
                    </span>
                </div>
                <div>
                    浮点数:
                    <input type="text" ng-model="length" name="length" smart-float />
                        {{length}}
                    <br/>
                    <span ng-show="myForm.length.$error.float">不是合法的浮点数!</span>
                </div>
                <div>
                    远程校验:
                    <input type="text" ng-model="remote" name="remote" remote-validation />
                        {{remote}}
                    <br/>
                    <span ng-show="myForm.remote.$error.remote">非法数据!</span>
                </div>
            </form>
        </div>
    </body>
</html>

JS代码:

var app = angular.module(‘form-example1‘, []);
var INTEGER_REGEXP = /^\-?\d*$/;
app.directive(‘integer‘, function() {
    return {
        require : ‘ngModel‘,
        link : function(scope, elm, attrs, ctrl) {
            ctrl.$parsers.unshift(function(viewValue) {
                if (INTEGER_REGEXP.test(viewValue)) {
                    ctrl.$setValidity(‘integer‘, true);
                    return viewValue;
                } else {
                    ctrl.$setValidity(‘integer‘, false);
                    return undefined;
                }
            });
        }
    };
});

var FLOAT_REGEXP = /^\-?\d+((\.|\,)\d+)?$/;
app.directive(‘smartFloat‘, function() {
    return {
        require : ‘ngModel‘,
        link : function(scope, elm, attrs, ctrl) {
            ctrl.$parsers.unshift(function(viewValue) {
                if (FLOAT_REGEXP.test(viewValue)) {
                    ctrl.$setValidity(‘float‘, true);
                    return parseFloat(viewValue.replace(‘,‘,‘.‘));
                } else {
                    ctrl.$setValidity(‘float‘, false);
                    return undefined;
                }
            });
        }
    };
});

app.directive(‘remoteValidation‘, function($http) {
    return {
        require : ‘ngModel‘,
        link : function(scope, elm, attrs, ctrl) {
            elm.bind(‘keyup‘, function() {
                $http({method: ‘GET‘, url: ‘FormValidation.jsp‘}).
                success(function(data, status, headers, config) {
                    if(parseInt(data)==0){
                        ctrl.$setValidity(‘remote‘,true);
                    }else{
                        ctrl.$setValidity(‘remote‘,false);
                    }
                }).
                error(function(data, status, headers, config) {
                    ctrl.$setValidity(‘remote‘, false);
                });
            });
        }
    };
});
时间: 2024-10-10 06:49:56

Angular表单的本地校验和远程校验的相关文章

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表单验证

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

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.修改的内容通常要在页

angular表单的使用实例

原文 https://www.jianshu.com/p/da1fd5396798 大纲 1.模板驱动表单的创建 2.响应式表单的创建 3.模板驱动型表单的自定义指令 4.响应式表单的自定义指令 5.父组件向子组件传递表单控制 6.代码素材 模板驱动表单的创建 //1.在根模块注入依赖模块 import { FormsModule } from '@angular/forms'; //2.在模板中创建表单控件 <form> <div class="form-group"

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表单

angular的表单,点击确定进行创建,支持批量创建,表单验证有样式提醒; <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> </head> <link rel="stylesheet" href="./../node_modules/bootstrap/dist/css/bootstrap.cs

session案例:防止表单重复提交、一次性校验码

session案例1:防止表单重复提交 原理: 1,表单页面由servlet程序生成,servlet为每次产生的表单页面分配一个唯一的随机标识号,并在FORM表单的一个隐藏字段中设置这个标识号,同时在当前用户的Session域中保存这个标识号. 2,当用户提交FORM表单时,负责处理表单提交的serlvet得到表单提交的标识号,并与session中存储的标识号比较,如果相同则处理表单提交,处理完后清除当前用户的Session域中存储的标识号. 3,在下列情况下,服务器程序将拒绝用户提交的表单请求

简单的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/