angularjs-表单验证

创建一个注册表单,表单中包括用户名字,邮件地址,和用户名(昵称);

1、开始定义一个表单

 <form name="signup_form" novalidateng-submit="signupForm()">
        <fieldset>
            <legend>Signup</legend>


            <button type="submit" class="button radius" >Submit</button>
                </div>
            </div>
        </fieldset>
    </form>

表单名称是signup_form,当表单提交时我们调用signupForm()。
2、添加用户名称
设置了一些验证,验证name字段长度大于3小于20,要求字段必填。

<div class="row">
   <div class="large-12 columns">
       <label>Your name</label>
       <input type="text" placeholder="Name" name="name" ng-model="signup.name" ng-minlength="3" ng-maxlength="20" required />
       <div class="error" ng-show="signup_form.name.$dirty && signup_form.name.$invalid">
          <small class="error" ng-show="signup_form.name.$error.required">Your name is required.</small>
          <small class="error" ng-show="signup_form.name.$error.minlength">Your name is required to be at least 3 characters.</small>
          <small class="error" ng-show="signup_form.name.$error.maxlength">Your name cannot be longer than 20 characters.</small>
       </div>
   </div>
</div>

3、添加email

<div class="row">
                <div class="large-12 columns">
                    <label>Your email</label>
                    <input type="email" placeholder="Email" name="email" ng-model="signup.email" ng-minlength="3" ng-maxlength="20" required />
                    <div class="error" ng-show="signup_form.email.$dirty && signup_form.email.$invalid">
                        <small class="error" ng-show="signup_form.email.$error.required">Your email is required.</small>
                        <small class="error" ng-show="signup_form.email.$error.minlength">Your email is required to be at least 3 characters.</small>
                        <small class="error" ng-show="signup_form.email.$error.maxlength">Your email cannot be longer than 20 characters.</small>
                    </div>
                </div>
            </div>

4、添加用户名
功能与上面相同并添加了一个自定义验证

HTML

<div class="row">
                <div class="large-12 columns">
                    <label>Username</label>
                    <input type="text" placeholder="Desired username" name="username" ng-model="signup.username" ng-minlength="3" ng-maxlength="20" ensure-unique="username" required />
                    <div class="error" ng-show="signup_form.username.$dirty && signup_form.username.$invalid">
                        <small class="error" ng-show="signup_form.username.$error.required">Please input a username.</small>
                        <small class="error" ng-show="signup_form.username.$error.minlength">Your username is required to be at least 3 characters.</small>
                        <small class="error" ng-show="signup_form.username.$error.maxlength">Your username cannot be longer than 20 characters.</small>
                        <small class="error" ng-show="signup_form.username.$error.unique">That username is taken,please try another.</small>
                    </div>
                </div>
            </div>

JavaScript

 <script>
        var app = angular.module('myApp',[]);
        app.directive('ensureUnique',function($http){
            return {
                require: 'ngModel',
                link: function(scope, ele, attrs, c){
                    scope.$watch(attrs.ngModel, function(n){
                        if(!n) return;
                        $http({
                            method: 'POST',
                            url: '/api/check/' + attrs.ensureUnique,
                            data: {
                                field: attrs.ensureUinque,
                                value: scope.ngModel
                            }
                        }).success(function(data){
                            c.$setValidity('unique',data.isUnique);
                        }).error(function(data){
                            c.$setValidity('unique',false);
                        });
                    });
                }
            };
        });
    </script>

最后,把按钮放进去。用ng-disabled指令基于表单的合法性来启用或禁用按钮

<button type="submit" class="button radius" ng-disabled="signup_form.$invalid">Submit</button>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值