正确引用js css文件后可运行
<!DOCTYPE html>
<html ng-app='myApp'>
<head>
<title>Bootstrap navigator</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap.min.css">
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/angular.min.js"></script>
</head>
<body>
<!--========================
07表单
============================ -->
<!-- 1.简单表单 class="simple-form"
*1.函数的定义(d)和用法(m)
reset() 方法:(d)可把表单中的元素重置为它们的默认值。(m)formObject.reset() -->
=================================================
<h3>1.简单表单 class="simple-form"</h3>
=================================================
<div ng-controller="Controller">
<form novalidate class="simple-form"><!-- novalidate是用来屏蔽浏览器本身的验证功能 -->
Name: <input type="text" ng-model="user.NaMe" /><br />
E-mail: <input type="email" ng-model="user.EmAil" /><br />
Gender: <input type="radio" ng-model="user.GenDer" value="male" />male
<input type="radio" ng-model="user.GenDer" value="female" />female<br />
<button ng-click="reset()">RESET</button>
<button ng-click="update(user)">SAVE</button>
</form>
<pre>form = {{user | json}}</pre>
<pre>master = {{master | json}}</pre>
</div>
=================================================
<h3>2.css表单 class="css-form"</h3>
=================================================
<!-- 2.css表单 class="css-form" -->
<div ng-controller="Controller">
<form novalidate class="css-form">
Name:
<input type="text" ng-model="user.name" required /><br />
E-mail: <input type="email" ng-model="user.email" required /><br />
Gender: <input type="radio" ng-model="user.gender" value="male" />male
<input type="radio" ng-model="user.gender" value="female" />female<br />
<button ng-click="reset()">RESET</button>
<button ng-click="update(user)">SAVE</button>
</form>
</div> <style type="text/css">
.css-form input.ng-invalid.ng-dirty {
background-color: #FA787E;
} .css-form input.ng-valid.ng-dirty {
background-color: #78FA89;
}
div[contentEditable] {/*对contentEditable属性样式的设定方法*/
cursor: pointer;
background-color: #D0D0D0;
}
button[ng-disabled] {/*对ng-disabled属性样式的设定方法*/
background-color: #FA787E;
} </style> =================================================
<h3>3.根据表单状态或者表单元素状态绑定 </h3>
<ol>
<li> 只有当表单发生改变时,重置按钮才会被显示出来。</li>
<li>只有当表单有改变并且改变的值都是合法的,保存按钮才会被显示出来。</li>
<li> 能自定义user.email和user.agree的错误信息。</li>
</ol>
=================================================
<!-- 3.根据表单状态或者表单元素状态绑定 -->
<div ng-controller="Controller">
<form name="form" class="css-form" novalidate>
Name:
<input type="text" ng-model="user.name" name="uName" required /><br />
E-mail:
<input type="email" ng-model="user.email" name="uEmail" required/><br /> <div ng-show="form.uEmail.$dirty && form.uEmail.$invalid">Invalid:
<!--此div,如果form表中的name为uEmail的input元素中的内容违法或者是脏数据,那么就显示出来-->
<span ng-show="form.uEmail.$error.required">Tell us your email.</span>
<!-- 如果错误信息是由required引起的,就显示此span--> <span ng-show="form.uEmail.$error.email">This is not a valid email.</span>
<!-- 如果错误信息是由里面的内容不合法引起的,就显示此span-->
</div> Gender: <input type="radio" ng-model="user.gender" value="male" />male
<input type="radio" ng-model="user.gender" value="female" />female<br /> <input type="checkbox" ng-model="user.agree" name="userAgree" required />
I agree: <input ng-show="user.agree" type="text" ng-model="user.agreeSign"
required /><br />
<div ng-show="!user.agree || !user.agreeSign">Please agree and sign.</div> <button ng-click="reset()" ng-disabled="isUnchanged(user)">RESET</button>
<button ng-click="update(user)"
ng-disabled="form.$invalid || isUnchanged(user)">SAVE</button>
</form>
</div>
=================================================
<h3>4.自定义验证 </h3>
<ol>
<li>模型到视图的更新中- 只要绑定的模型改变了,NgModelController#$formatters数组中的函数就会被轮流调用,所以每一个函数都有机会对数据进行格式化,当然你也可以通过NgModelController#$setValidity来改变表单的验证状态。</li>
<li>视图到模型的更新中- 相同的,只要用户与表单交互了,NgModelController#$setViewValue就会被调用。 这次是NgModelController#$parsers数组中的函数会被依次调用,每个函数都有机会来改变值或者通过NgModelController#$setValidity来改变表单的验证状态</li>
<li>第一个要验证的是输入是否是整数。例如,1.23就不是符合验证的值,因为它包含了分数部分。注意,我们是将验证数组中的项从头取出,而不是压入。这是因为我们要在输入值被改变(格式化)前,先验证输入的合法性</li>
<li>第二个指令是一个“智能浮点(smart-float)”。它能把"1.2"或者"1,2"都转化为合法的浮点数"1.2"。注意,这里我们不能使用“数字输入类型”,因为H支持TML5的浏览器不允许用户输入像"1,2"这样的非法值</li> </ol>
=================================================
<div ng-controller="Controller">
<form name="form" class="css-form" novalidate>
<div>
Size (integer 0 - 10):
<input type="number" ng-model="size" name="size"
min="0" max="10" integer />{{size}}<br /><!-- 自定义指令integer 和 smart-float -->
<span ng-show="form.size.$error.integer">This is not valid integer!</span>
<span ng-show="form.size.$error.min || form.size.$error.max">
The value must be in range 0 to 10!</span>
</div> <div>
Length (float):
<input type="text" ng-model="length" name="length" smart-float />
{{length}}<br />
<span ng-show="form.length.$error.float">
This is not a valid float number!</span>
</div>
</form>
</div> =================================================
<h3>5.自定义表单控件</h3>
<ol>
<li>实现render方法。这个方法负责在数据模型变化时,把变化的值传递给NgModelController#$formatters后,用来在view上渲染新的数据。</li>
<li>在用户与控件交互并且模型需要被更新时,调用$setViewValue方法。这通常是在DOM的监听事件中完成的。</li>
<li>如何添加一个“内容可编辑”的数据双向绑定的元素</li>
</ol>
================================================= <div contentEditable="true" ng-model="content" title="Click to edit">Some</div>
<pre>model = {{content}}</pre> <script>
var app = angular.module('myApp', []); /*表单内容的保存与重置 自定义函数:Reset()、update()、isUnchange() */
app.controller('Controller', function($scope) {
$scope.master= {};
$scope.update = function(user) {
$scope.master= angular.copy(user);
};
$scope.reset = function() {
$scope.user = angular.copy($scope.master);
};
$scope.isUnchanged = function(user) {
return angular.equals(user, $scope.master);
};
$scope.reset();
}); /*整数验证
1.函数的定义(d)和用法(m)
test()方法:(d)用于检测一个字符串是否匹配某个模式. (m)RegExpObject.test(string) 返回值为true 或 false; */
var INTEGER_REGEXP = /^\-?\d*$/;/*整数的正则表达式:或者以"-"(负)开头,或者没有负号,后面都是正整数,包括0*/
app.directive('integer', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
if (INTEGER_REGEXP.test(viewValue)) {
/* it is valid*/
ctrl.$setValidity('integer', true);
return viewValue;
} else {
/* it is invalid, return undefined (no model update)*/
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('contenteditable', function() {/*自定义指令:contenteditable*/
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
/*view -> model*/
elm.bind('blur', function() {/*给元素绑定blur事件*/
scope.$apply(function() {
ctrl.$setViewValue(elm.html());/*当输入结束后,焦点离开div元素时,就更新model*/
});
}); //model -> view
ctrl.$render = function(value) {
elm.html(value);/*更新视图view*/
}; /* load init value from DOM*/
ctrl.$setViewValue(elm.html());
}
};
});
</script> </body>
</html>

参考文章链接地址:http://www.linuxidc.com/Linux/2015-01/112574.htm   http://angularjs.cn/A00t

Angularjs之表单实例(三)的更多相关文章

  1. AngularJS:表单

    ylbtech-AngularJS:表单 1.返回顶部 1. AngularJS 表单 AngularJS 表单是输入控件的集合. HTML 控件 以下 HTML input 元素被称为 HTML 控 ...

  2. 【AngularJs】---表单验证

    1. 必填项 验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required /> 2 ...

  3. angularJS 过滤器 表单验证

    过滤器1.filter的作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果,主要用于数据的格式化.2.内置过滤器(1)Currency(货币)将一个数值格式化为货币格式,默认为$(2)D ...

  4. AngularJS实现表单手动验证和表单自动验证

    AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证.一.手动验证 所谓手动验证是通过AngularJS表单的属性来验证.而成为AngularJS表单必须满足两个条件: 1.给for ...

  5. PHP 表单验证 - 完成表单实例

    ------------------------------------------------------------------------------------------- 本节展示如何在用 ...

  6. PHP 表单 - 5(完整表单实例)

    PHP 完整表单实例 本章节将介绍如何让用户在点击"提交(submit)"按钮提交数据前保证所有字段正确输入. PHP - 在表单中确保输入值 在用户点击提交按钮后,为确保字段值是 ...

  7. 基于angularJS的表单验证练习

    今天看了一下angularJS的表单验证,看的有点云里雾里(也有可能是雾霾吸多了),于是做了一个小练习来巩固一下. html: <div ng-controller="Aaa" ...

  8. HTML表单实例

    HTML表单 表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,实现一个特定功能的表单区域(比如:注册), 首先应该用<form>标签来定义表单区域整体,在此标签中再使用不同的表单 ...

  9. form表单提交三种方式,demo实例详解

    第一种:使用type=submit  可以直接提交 <html> <head> <title>submit直接提交</title> </head& ...

随机推荐

  1. 《Maven实战》阅读笔记

    java -versionmvn -vmvn help:system m2eclipse maven->install MAVEN_OPTS: -Xms128m -Xmx512mmvn clea ...

  2. linux spi 设备节点 读写

    本文记录spi设备节点的操作方法. SPI总线设备文件名通常为/dev/spidevN.P(N=0.1.2--,P=0.1.2--), 其中N表示第几路SPI总线,而P表示在该路SPI总线中使用哪个C ...

  3. JDK version

    Java 1.2 uses major version 46 Java 1.3 uses major version 47 Java 1.4 uses major version 48 Java 5 ...

  4. 使用C语言把字母转换成大写,不能使用库函数

    char to_upper(char input) {   if ('a' <= input && input <= 'z') {     return input - ' ...

  5. DBCC TRACEON/TRACEOFF/TRACESTATUS

    1. enable trace DBCC TRACEON ( trace# [ ,...n ][ , -1 ] ) [ WITH NO_INFOMSGS ] trace# Is the number ...

  6. 微信域名weixin.com天价成交!是腾讯吗?

    据业内人士爆料,“微信”双拼域名weixin.com已于今天交易了,成交价格8位数.如此大手笔,神秘买家会是腾讯吗? 通过查询该域名的whois信息,最近一次的更新时间显示为今年4月13日,注册邮箱信 ...

  7. 禁用LMHOSTS和NetBIOS后提升上网速度 ?

    LMHOSTS 文件是 windows 中进行 netbios 静态解析时使用的,其作用类型于 HOSTS 文件. 今天发现这个东西有点问题,在用ADSL上网时,明明 IP . DNS 都设置得好好的 ...

  8. 集群中用Memcached来实现session共享

    这几天在实现nginx集群的过程中,发现session使用存在问题,登录页面后有时候需要重复登录,和开发部沟通后,决定采用memcached来实现session的共享,这也是各大型网站推荐的方式.开发 ...

  9. 修改文件中的内容,使用fileinput模块

    import fileinput filename = 'passwd' ,backup='.bak') print line.replace('root','ROOT') a = ' this is ...

  10. css实现元素居中

     参见详细教程,该教程涵盖了所有居中的情况: https://css-tricks.com/centering-css-complete-guide/ css元素居中 1.水平居中 1)文本,图片等行 ...