AngularJS <input> validation with no enclosing <form>

前端 未结 3 988
伪装坚强ぢ
伪装坚强ぢ 2020-12-07 14:24

Is it possible in Angular to validate a single, isolated in a similar way the forms are validated? I\'m thinking about something like this:

<
相关标签:
3条回答
  • 2020-12-07 14:52

    Building on Silvio Lucas' answer, if you are iterating in a loop and need to be able to interpolate form names and valid states:

    <div
      name="{{propertyName}}"
      ng-form=""
      class="property-edit-view"
      ng-class="{
        'has-error': {{propertyName}}.editBox.$invalid,
        'has-success':
          {{propertyName}}.editBox.$valid &&
          {{propertyName}}.editBox.$dirty &&
          propertyValue.length !== 0
      }"
      ng-switch="schema.type">
      <input
        name="editBox"
        ng-switch-when="int"
        type="number"
        ng-model="propertyValue"
        ng-pattern="/^[0-9]+$/"
        class="form-control">
      <input
        name="editBox"
        ng-switch-default=""
        type="text"
        ng-model="propertyValue"
        class="form-control">
      <span class="property-type" ng-bind="schema.type"></span>
    </div>
    
    0 讨论(0)
  • 2020-12-07 14:53

    You may use the ng-form angular directive (see docs here) to group anything, even outside a html form. Then, you can take advantage from angular FormController.

    <div class="form-group" ng-form name="myForm">
        <input name="myInput" type="text" class="form-control" ng-model="bindTo" ng-maxlength="5">
        <span class="error" ng-show="myForm.myInput.$error.maxlength">Too long!</span>
    </div>
    

    Example

    0 讨论(0)
  • 2020-12-07 14:59
    <!DOCTYPE html>
    <html ng-app="plunker">
    <head>
        <meta charset="utf-8" />
        <title>AngularJS Plunker</title>
        <script>document.write('<base href="' + document.location + '" />');</script>
        <link rel="stylesheet" href="style.css" />
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js">   </script>
    
    </head>
    
    <body ng-controller="MainCtrl">
        <div class="help-block error" ng-show="test.field.$error.required">Required</div>
        <div class="help-block error" ng-show="test.firstName.$error.required">Name Required</div>
        <p>Hello {{name}}!</p>
        <div ng-form="test" id="test">
            <input type="text" name="firstName" ng-model="firstName" required> First name <br/> 
            <input id="field" name="field" required ng-model="field2" type="text"/>
        </div>
    </body>
    <script>
        var app = angular.module('plunker', []);
    
        app.controller('MainCtrl', function($scope) {
          $scope.name = 'World';
          $scope.field = "name";
          $scope.firstName = "FirstName";
          $scope.execute = function() {
            alert('Executed!');
          }
        });
    
    </script>
    

    0 讨论(0)
提交回复
热议问题