<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'angular1.jsp' starting page</title>
<!-- 引入bootstrap的css样式 -->
<link rel="stylesheet" type="text/css"
href="static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<!-- 引入jquery -->
<script type="text/javascript" src="static/js/jquery-3.2.1.js"></script>
<!-- 引入bootstrap的js-->
<script type="text/javascript"
src="static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/angular.min.js"></script>
<script type="text/javascript">
//步骤二:创建和部署controller 步骤三:传入用户数据和创建验证规则
//$touch:表示用户已经碰过这个表单
var test = angular.module("myApp", []);
//创建一个controller ,"controller名称" ,然后是一个回调函数 function{在回调函数里传一个$scope进去 作为dom里头一个域 ,域里有一个 userdata,
//最后把表单数据都存在这个userdata里 }
//“MainController”写在<body>标签里 表示:此标签下所有的东西在这个ng-controlller的域里
test.controller("MainController", function($scope) {
$scope.userdata = {};
//域里还有一个submitForm,表单一旦提交后怎么办 执行这个回调函数
$scope.submitForm = function() {
console.log($scope.userdata);
if ($scope.signUpForm.$invalid) {
alert("请检查你的信息!");
} else
alert("提交成功!");
};
});
//创建自定义指令
test.directive("compare", function() {
if(userdata.password==userdata.password2){
alert("密码校验成功!");
}else
alert("密码校验失败!");
//命名函数体
var o = {};
//命令作用在命令和属性上
o.strict = 'AE';
//o.scope等于一个对象
o.scope = {
//orgText等于之前的字符
orgText : '=compare'
};
o.require = 'ngModel';
//主函数 传参 一次是:域,当前元素,属性,ng-model
o.link = function(sco, ele, att, con) {
//最后传参给compare=回调函数 传回一个值,这个值用户输入的值
con.$validators.compare = function(v) {
//之前输过的和新输入的是否一样
alert("v:"+v);
return v == sco.orgText;
};
//一旦有变化就执行function函数
sco.$watch('orgText', function() {
con.$validate();
});
};
});
</script>
<style type="text/css">
.error {
color: #a10;
}
/* p.error{
display:none;
} */
input.error {
border: 1px solid #a10;
}
.wrapper {
width: 200px;
margin: 30px auto;
}
</style>
</head>
<!-- ng-model指令:数据绑定 ng-class:用在一些需要动态类名的一些标签上 显示一下CSS样式 error:singnUpForm.username.$invalid(不合法)就使用这个error类名 ,会自动添加到 class="form-control后面"
2. 给一些条件,来判断合法不合法 4.ruquired 必填的 5.ng-model 用户输入的容器 把error添加到class里
6.signUpForm.username.touched 曾经用过的,不是一开始就验证
7.ng-if指令,判断
8.disabled:username必须合法时 username2才能填写
class: -->
<body ng-app="myApp" ng-controller="MainController">
<div class="wrapper">
<h2>注册</h2>
<form name="signUpForm" ng-submit="submitForm()">
<div class="form-group">
<label>用户名:</label>
<pre>{{signUpForm.username.$valid}}</pre>
<pre>{{userdata.username}}</pre>
<input name="username" type="text" class="form-control"
ng-model="userdata.username" ng-minlength="4" ng-maxlength="32"
required />
<p class="error"
ng-if="(signUpForm.username.$error.minlength || signUpForm.username.$error.maxlength)
&& signUpForm.username.$touched">用户名长度在4之32位之间</p>
<p class="error"
ng-if="signUpForm.username.$error.required&&
signUpForm.username.$touched">用户名名不能为空!</p>
</div>
<div class="form-group" ng-class="{'has-success': signUpForm.password.$valid}">
<label>密码:</label>
<pre>{{signUpForm.password.$valid}}</pre>
<pre>{{userdata.password}}</pre>
<input name="password" type="password" class="form-control"
ng-model="userdata.password" ng-minlength="4" ng-maxlength="122"
required />
<p class="error"
ng-if="signUpForm.password.$error.required&&
signUpForm.password.$touched">密码不能为空!</p>
<p class="error"
ng-if="(signUpForm.password.$error.minlength||signUpForm.password.$error.maxlength)
&&signUpForm.password.$touched">用户名长度在4之122位之间</p>
</div>
<div class="form-group">
<label>确认密码:</label>
<pre>{{signUpForm.password2.$valid}}</pre>
<pre>{{userdata.password2}}</pre>
<input name="password2" type="password" class="form-control"
ng-model="userdata.password2" compare="userdata.password" required/>
<p class="error"
ng-if="signUpForm.password2.$error.compare &&
signUpForm.password2.$touched">两次输入不一致!</p>
</div>
<div class="form-group">
<button class="btn btn-primary">注册</button>
</div>
</div>
</form>
</body>
</html>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'angular1.jsp' starting page</title>
<!-- 引入bootstrap的css样式 -->
<link rel="stylesheet" type="text/css"
href="static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<!-- 引入jquery -->
<script type="text/javascript" src="static/js/jquery-3.2.1.js"></script>
<!-- 引入bootstrap的js-->
<script type="text/javascript"
src="static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/angular.min.js"></script>
<script type="text/javascript">
//步骤二:创建和部署controller 步骤三:传入用户数据和创建验证规则
//$touch:表示用户已经碰过这个表单
var test = angular.module("myApp", []);
//创建一个controller ,"controller名称" ,然后是一个回调函数 function{在回调函数里传一个$scope进去 作为dom里头一个域 ,域里有一个 userdata,
//最后把表单数据都存在这个userdata里 }
//“MainController”写在<body>标签里 表示:此标签下所有的东西在这个ng-controlller的域里
test.controller("MainController", function($scope) {
$scope.userdata = {};
//域里还有一个submitForm,表单一旦提交后怎么办 执行这个回调函数
$scope.submitForm = function() {
console.log($scope.userdata);
if ($scope.signUpForm.$invalid) {
alert("请检查你的信息!");
} else
alert("提交成功!");
};
});
//创建自定义指令
test.directive("compare", function() {
if(userdata.password==userdata.password2){
alert("密码校验成功!");
}else
alert("密码校验失败!");
//命名函数体
var o = {};
//命令作用在命令和属性上
o.strict = 'AE';
//o.scope等于一个对象
o.scope = {
//orgText等于之前的字符
orgText : '=compare'
};
o.require = 'ngModel';
//主函数 传参 一次是:域,当前元素,属性,ng-model
o.link = function(sco, ele, att, con) {
//最后传参给compare=回调函数 传回一个值,这个值用户输入的值
con.$validators.compare = function(v) {
//之前输过的和新输入的是否一样
alert("v:"+v);
return v == sco.orgText;
};
//一旦有变化就执行function函数
sco.$watch('orgText', function() {
con.$validate();
});
};
});
</script>
<style type="text/css">
.error {
color: #a10;
}
/* p.error{
display:none;
} */
input.error {
border: 1px solid #a10;
}
.wrapper {
width: 200px;
margin: 30px auto;
}
</style>
</head>
<!-- ng-model指令:数据绑定 ng-class:用在一些需要动态类名的一些标签上 显示一下CSS样式 error:singnUpForm.username.$invalid(不合法)就使用这个error类名 ,会自动添加到 class="form-control后面"
2. 给一些条件,来判断合法不合法 4.ruquired 必填的 5.ng-model 用户输入的容器 把error添加到class里
6.signUpForm.username.touched 曾经用过的,不是一开始就验证
7.ng-if指令,判断
8.disabled:username必须合法时 username2才能填写
class: -->
<body ng-app="myApp" ng-controller="MainController">
<div class="wrapper">
<h2>注册</h2>
<form name="signUpForm" ng-submit="submitForm()">
<div class="form-group">
<label>用户名:</label>
<pre>{{signUpForm.username.$valid}}</pre>
<pre>{{userdata.username}}</pre>
<input name="username" type="text" class="form-control"
ng-model="userdata.username" ng-minlength="4" ng-maxlength="32"
required />
<p class="error"
ng-if="(signUpForm.username.$error.minlength || signUpForm.username.$error.maxlength)
&& signUpForm.username.$touched">用户名长度在4之32位之间</p>
<p class="error"
ng-if="signUpForm.username.$error.required&&
signUpForm.username.$touched">用户名名不能为空!</p>
</div>
<div class="form-group" ng-class="{'has-success': signUpForm.password.$valid}">
<label>密码:</label>
<pre>{{signUpForm.password.$valid}}</pre>
<pre>{{userdata.password}}</pre>
<input name="password" type="password" class="form-control"
ng-model="userdata.password" ng-minlength="4" ng-maxlength="122"
required />
<p class="error"
ng-if="signUpForm.password.$error.required&&
signUpForm.password.$touched">密码不能为空!</p>
<p class="error"
ng-if="(signUpForm.password.$error.minlength||signUpForm.password.$error.maxlength)
&&signUpForm.password.$touched">用户名长度在4之122位之间</p>
</div>
<div class="form-group">
<label>确认密码:</label>
<pre>{{signUpForm.password2.$valid}}</pre>
<pre>{{userdata.password2}}</pre>
<input name="password2" type="password" class="form-control"
ng-model="userdata.password2" compare="userdata.password" required/>
<p class="error"
ng-if="signUpForm.password2.$error.compare &&
signUpForm.password2.$touched">两次输入不一致!</p>
</div>
<div class="form-group">
<button class="btn btn-primary">注册</button>
</div>
</div>
</form>
</body>
</html>