如何在角度js

时间:2015-06-26 11:15:38

标签: css angularjs

如何在文本框旁边而不是在文本框下方显示消息。现在它显示输入框下面的所有验证消息。

<!DOCTYPE html>
<html ng-app="myApp" >
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
        <link rel="stylesheet" href="style.css" />
        <script>
            "use strict";
            var app = angular.module('myApp', []);

            app.controller('MainCtrl', function ($scope) {
                $scope.cityArray = ["hyderabad", "secunderabad", "delhi", "mumbai"];
                $scope.submit = function ($event) {
                    if ($scope.myForm.$invalid) {
                        // Or some other update
                        $scope.myForm.$submitted = true;
                        $event.preventDefault();
                    }
                };
            });
            app.directive('uniqueUsername', function ($http) {
                return {
                    restrict: 'A',
                    require: 'ngModel',
                    link: function (scope, element, attrs, ngModel) {
                        element.bind('blur', function (e) {
                            ngModel.$setValidity('unique', true);

                            $http.post('CheckUserName2.do').success(function (data) {
                                if (data) {
                                    ngModel.$setValidity('unique', false);
                                }
                            });
                        });
                    }
                };
            });
        </script>
    </head>
    <body ng-controller="MainCtrl">
        <div class="container">
            <div class="col-md-6 col-md-offset-0">
                <div class="panel panel-login">
                    <div class="panel-body">
                        <div class="row">
                            <div class="col-lg-12">
                                <h2 class="text-muted">Registration form</h2>
                                <div>
                                    <form name="myForm" action="RegistrationServlet.do" method="POST" >
                                        First name:<input type="text" class="form-control input-sm" name="uname" ng-pattern="/^[a-zA-Z]{3,20}/" ng-model="uname" unique-username="" placeholder="First Name" required/>
                                        <span style="color:red" ng-show="myForm.uname.$error.pattern">First name cannot be less than 3 letters with no digits</span>
                                        <span style="color:red" class="error" ng-if="myForm.$submitted && myForm.uname.$error.required">Please fill field above<br></span><br/>
                                        <span style="color:red" class="hide-while-in-focus" ng-show="myForm.uname.$error.unique">Username already exist<br/></span>
                                        <button class="form-control btn btn-success" type="submit" ng-click="submit($event)">Submit</button>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

这是plunker

1 个答案:

答案 0 :(得分:2)

右侧没有空格可在输入框旁边显示错误消息。将错误消息放在提交按钮上方会导致一个小的UI问题:每次出错时,表单提交按钮都会垂直闪烁。 即 - 提交表单而不输入任何输入以获取错误消息。 - 输入/删除输入框中的任何字符以查看闪烁

解决方法:

将错误消息保留在提交按钮下方或为错误消息提供专用高度以避免不良影响或两者兼而有之

  <form name="myForm" action="RegistrationServlet.do" method="POST" >
      First name:<input type="text" class="form-control input-sm" name="uname" ng-pattern="/^[a-zA-Z]{3,20}/" ng-model="uname" unique-username="" placeholder="First Name" required/><br><br>
      <button class="form-control btn btn-success" type="submit" ng-click="submit($event)">Submit</button>
      <div style="height=100px">
        <span style="color:red" ng-show="myForm.uname.$error.pattern">First name cannot be less than 3 letters with no digits</span>
        <span style="color:red" class="error" ng-if="myForm.$submitted && myForm.uname.$error.required">Please fill field above<br></span><br/>
        <span style="color:red" class="hide-while-in-focus" ng-show="myForm.uname.$error.unique">Username already exist<br/></span>
      </div> 
  </form>

Demo