2017-09-01 15 views
0

J'ai une entrée qui ne devrait valider que si la longueur d'entrée est 11 ou 14. Y a-t-il un moyen d'y parvenir sans créer de directive?AngularJs valide la longueur d'entrée pour plusieurs longueurs

Il y a une chose:

J'utilise un masque qui formate l'entrée comme ceci:
(quand 11) 000.000.000-00
(lorsque 14) 00.000.000/0000 -00

le motif doit ignorer '.' et '/'

Merci.

+1

Pouvez-vous partager votre extrait de code? Parce que c'est possible mais nous devons savoir comment vous avez écrit le code – Vish

Répondre

1

Essayez utilisation ng-pattern

/^([0-9]{11}|[0-9]{14})$/ 

// Code goes here 
 

 
var app = angular.module('app', []); 
 
app.controller('FirstCtrl', function($scope) { 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="FirstCtrl as vm"> 
 
    <form name="form"> 
 
    <input type="text" name="name" ng-model="name" ng-pattern="/^([0-9]{11}|[0-9]{14})$/"> 
 

 
    <span ng-show="form.name.$error.pattern">Not valid!</span> 
 
    </form> 
 
</div>

+1

Cela m'a aidé, mais j'ai dû faire quelques ajustements: D'abord, j'ai utilisé juste 'pattern'attribute au lieu de' ng-pattern', car ng-pattern nécessite une expression. Deuxièmement, j'ai mis à jour l'expression rationnelle pour faire correspondre les deux masques de mon entrée. Ceci est utile au Brésil pour les identifiants CNPJ et CPF. 'pattern ="^([0-9] {3} \. [0-9] {3} \. [0-9] {3} \ - [0-9] {2}) | ([0 -9] {2} \. [0-9] {3} \. [0-9] {3} \/[0-9] {4} \ - [0-9] {2}) $ "' – tfuelber

0

essayez ceci en vous tag

ng-pattern="/^[0-9]{1,16}$/" ng-maxlength="16" 
+1

Cela ne répond pas aux spécificités de la question, car il accepterait des entrées de longueurs autres que 11 ou 14, et ne traiterait pas les/et. personnages. –