2016-03-31 11 views
1

Ich versuche zu validieren die Textbox erlauben nur ganzzahlige und größer als null Werte.AngularJs Eingabe Textfeld erlauben nur mehr als Null Wert

Hier habe ich meinen Code angeschlossen.

Html:

<body ng-app="myApp"> 
    NUMBER ONLY <input type="text" allow-pattern="\d" /> 

</body> 

Js:

var app = angular.module("myApp",[]); 

app.directive('allowPattern', [allowPatternDirective]); 

function allowPatternDirective() { 
    return { 
     restrict: "A", 
     compile: function(tElement, tAttrs) { 
      return function(scope, element, attrs) { 
       element.bind("keypress", function(event) { 
        var keyCode = event.which || event.keyCode; // I safely get the 
        if (!keyCodeChar.match(new RegExp(attrs.allowPattern, "i"))) { 
      event.preventDefault(); 
         return false; 
        }   
       }); 
      }; 
     } 
    }; 
} 

Auch habe ich versucht, wie dieses Gebrüll:

<body ng-app="myApp"> 
    NUMBER ONLY <input type="text" allow-pattern="^[1-9][0-9]*$" /> 

</body> 

Aber seine nicht funktioniert.

prüfen jsfiddle Link: click here

+0

warum eine separate Richtlinie verweisen? Sie können 'ng-pattern' verwenden –

+0

Mögliches Duplikat von [angular validate input type =" number "] (http://stackoverflow.com/questions/17395188/angular-validate-input-type-number) – Gianmarco

+0

@Gianmarco - Eingabe type = "number" ist für meinen Fall nicht geeignet, da die Textbox Text- oder Zahlenoption auf einer anderen Dropdown-Option basiert. Es ist möglich, in meinem Beispiel zu tun? – RSKMR

Antwort

0

Sie Gebrauch von angular form validation machen können und auch ng-model-options

Hier ist der Link zu Codepen

-Controller verwenden Snippet:

var app = angular.module('app',[]); 
app.controller('myCtrl',function($scope){ 
$scope.onlyNumbers = /^[1-9]+[0-9]*$/; 
}) 

Ausblick:

<div ng-app="app"> 
<br /> 
<br /> 
<div class="col-md-2" ng-controller="myCtrl"> 
    <form name="myForm1"> 
    <div class="form-group" ng-class="{'has-error':myForm1.number1.$invalid}"> 
    <label for="">Following validation happens as the user entrs a value.</label> 
    <input class="form-control" ng-pattern="onlyNumbers" ng-model="value1" name="number1"/> Valid? {{myForm1.number1.$valid}} 
    </div> 
</form> 
<form name="myForm2"> 
    <div class="form-group" ng-class="{'has-error':myForm2.number2.$invalid}"> 
    <label for="">Following validation happens after blur </label> 
    <input class="form-control" ng-pattern="onlyNumbers" ng-model="value2" name="number2" ng-model-options="{ updateOn: 'blur'}"/> Valid? {{myForm2.number2.$valid}} 
    </div> 
</form> 

Für mehr darüber, wie Sie diesen Prozess verbessern können über Controller this link