为了账号安全,请及时绑定邮箱和手机立即绑定

请问哪里有问题,有没有人帮我看一下呢

<body ng-app="myApp" ng-controller="signUpController">
		<form name="signUpForm" ng-submit="submitForm()">
			<label>用户名</label>
			<pre>合法{{signUpForm.username.$valid}}</pre>
			<pre>{{userdata.username}}</pre>
			<input name="username"
				ng-model="userdata.username"
				ng-class="{'error':signUpForm.username.$invalid && signUpForm.username.$dirty}"
				type="text" 
				ng-minlength="4" 
				ng-maxlength="10" 
				required />
			<p class="error" ng-if="(signUpForm.username.$error.required && 
				signUpForm.username.touched">用户名不能为空</p>
			<p class="error" ng-if="(signUpForm.username.$error.minlength || signUpForm.username.$error.maxlength) && 
				signUpForm.username.touched">用户名长度应在4到10位之间</p>
			
			<label>密码</label>
			<pre>合法{{signUpForm.password.$valid}}</pre>
			<pre>{{userdata.password}}</pre>
			<input name="password" 
				type="password" 
				ng-model="userdata.password" 
				required 
				ng-minlength="6" 
				ng-maxlength="255"
				required />
			<p class="error" ng-if="(signUpForm.username.$error.required && 
				signUpForm.username.touched">密码不能为空</p>
			<p class="error" ng-if="(signUpForm.password.$error.minlength || signUpForm.password.$error.maxlength) && 
				signUpForm.username.touched">用户名长度应在6到255位之间</p>
			
			
			<label>确认密码</label>
			<pre>合法{{signUpForm.password2.$valid}}</pre>
			<pre>{{userdata.password2}}</pre>
			<input name="password2" 
				type="password" 
				ng-model="userdata.password2" 
				compare="username.password"
				required />
			<p class="error" ng-if="(signUpForm.password2.$error.compare && 
				signUpForm.password2.touched">密码不一致</p>
				
			<button ng-disabled="signUpForm.username.$invalid || signUpForm.password.$invalid">提交</button>
		</form>
	</body>
angular.module('myApp',[]).controller('signUpController',function($scope){
	$scope.userdata={};//所有的表单数据都存在userdata里边
	
	$scope.submitForm=function(){
		console.log($scope.userdata);
		if($scope.signUpForm.$invalid){
			alert("信息有误");
		}else{
			alert("提交成功");
		}
	}
})
.directive('compare',function(){
	var o={};
	o.strict='AE';
	o.scope={
		orgText:'=compare'
	}
	
	o.require='ngModel';
	o.link=function(sco,ele,att,con){
		con.$validators.compare=function(v){
			return v==sco.orgText;
		}
		sco.$watch('orgText',function(){
			con.$validate();
		})
	}
	return o;
})


正在回答

3 回答

你的每个touched都没有加$符号,都加上试试。

0 回复 有任何疑惑可以回复我~
#1

懒姑娘要学习了 提问者

非常感谢!
2018-01-17 回复 有任何疑惑可以回复我~

发现一个问题

<p class="error" ng-if="(signUpForm.username.$error.required && 

                signUpForm.username.touched">用户名不能为空</p>

touched前面应该有$符号,应该是下面这样

<p class="error" ng-if="(signUpForm.username.$error.required && 

                signUpForm.username.$touched">用户名不能为空</p>

PS: 我也犯过同样的错误。


0 回复 有任何疑惑可以回复我~

如果你是完全按照老师讲的,完成的代码的话,body里面应该有两个script引入

<script src="lib/angular.min.js"></script>

<script src="js/main.js"></script>

你少了这两个。

如果你已经在head里面引入了的话。

以下是我写的代码,你可以参考一下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>表单验证Demo</title>

<link rel="stylesheet" type="text/css" href="lib/bootstrap.min.css">

<link rel="stylesheet" type="text/css" href="lib/font-awesome/css/font-awesome.css">

<style type="text/css">

.red {

background: #a30;

}


.input_result {

position: relative;

top: -30px;

left: 280px;

}


.error {

color: #a10;

}


/*p.error {

display: none;

}*/


p.success {

color: #3c763d;

}


input.error {

border: 1px solid #a10;

}


.wrapper {

width: 300px;

margin: 30px auto;

}

</style>

</head>

<body ng-app="myApp" ng-controller="SignUpController">

<div class="wrapper">

<h2>注册</h2>

<form name="signUpForm" ng-submit="submitForm()">

<div class="form-group" ng-class="{ 'has-success': signUpForm.username.$valid }">

<label>用户名:</label>

<!-- <pre>合法:{{ signUpForm.username.$valid }}</pre>

<pre>{{ userdata.username }}</pre> -->

<input type="text"      

       name="username" 

       class="form-control"

       ng-model="userdata.username"

       required

       ng-minlength='4'

       ng-maxlength='32'>

<p class="fa fa-check input_result success" 

ng-if="signUpForm.username.$valid"></p>

<p class="error" ng-if="

signUpForm.username.$error.required && 

signUpForm.username.$touched">

用户名不可为空!

</p>

<p class="error" ng-if="

(signUpForm.username.$error.minlength ||

signUpForm.username.$error.maxlength) && 

signUpForm.username.$touched">

用户名长度应在4至32位之间!

</p>

</div>


<div class="form-group" ng-class="{ 'has-success': signUpForm.password.$valid }">

<label>密码:</label>

<!-- <pre>合法:{{ signUpForm.password.$valid }}</pre>

<pre>{{ userdata.password2 }}</pre> -->

<input type="password" 

       name="password" 

       class="form-control"

       ng-model="userdata.password"

       ng-minlength='6'

       ng-maxlength='255'

       required>

<p class="fa fa-check input_result success" 

ng-if="signUpForm.password.$valid"></p>

<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">

    密码长度应在6至255位之间!

</p>

</div>


<div class="form-group" ng-class="{ 'has-success': signUpForm.password2.$valid }">

<label>确认密码:</label>

<!-- <pre>合法:{{ signUpForm.password2.$valid }}</pre>

<pre>{{ userdata.password2 }}</pre> -->

<input type="password" 

       name="password2" 

       class="form-control"

       ng-model="userdata.password2"

       compare="userdata.password"

       required>

<p class="fa fa-check input_result success" 

ng-if="signUpForm.password2.$valid"></p>

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

</form>

</div>

<!-- <form name="signUpForm" ng-submit="submitForm()">

<div class="form-group">

<label>用户名:</label>

<input name="username"

   ng-model="username"

   ng-class="{ 'error': signUpForm.username.$invalid &&

signUpForm.username.$touched }"

   ng-minlength="4"

   required

   class="form-control" > -->


    <!-- <input name="username2"

   ng-model="username2"

   ng-disabled="signUpForm.username.$valid"

   required 

   class="form-control" > -->

    <!-- <div ng-if="signUpForm.username.$invalid &&

    signUpForm.username.$touched">您的输入有误请检查</div>

    

    <div ng-if="submitForm.username.$valid &&

    signUpForm.username.$touched" >

    sit amet, adipisicing elit. Ab ad animi as

    </div> -->

<!-- </div>


<button type="submit" class="btn btn-primary" ng-disabled="signUpForm.username.$invalid">提交</button>

</form> -->

<!-- <input 

class="form-control" 

ng-model="name" 

type="text" 

ng-minlength='4' 

ng-maxlength='10'>

<div class="red">{{ name }}</div>


<input 

class="form-control" 

ng-model="name2" 

type="text" 

ng-minlength='4' 

ng-maxlength='10'>

<div class="red">{{ name2 }}</div> -->


<script src="lib/angular.min.js"></script>

<script src="js/main.js"></script>

</body>

</html>

------------分割线------------

angular.module('myApp', [])

   .controller('SignUpController', function($scope){

    $scope.userdata = {};


    $scope.submitForm = function(){

    console.log($scope.userdata);

    if($scope.submitForm.$invalid){

    alert("请检查您的信息");

    }else{

    alert("提交成功!");

    }

    }

   })


   .directive('compare', function(){

    var o = {};

    o.strict = 'AE';

    o.scope = {

    orgText: '=compare'

    }

    o.require = 'ngModel';

    o.link = function(sco, ele, att, con){

    con.$validators.compare = function(v){

    return v == sco.orgText;

    }


    sco.$watch('orgText', function(){

    con.$validate();

    })

    }

    return o;

   })

你可以对照着看一下。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
AngularJS表单验证
  • 参与学习       39428    人
  • 解答问题       130    个

一看就明白的AngularJS表单验证

进入课程

请问哪里有问题,有没有人帮我看一下呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信