Bonjour, j’ai un compteur de caractères pour une zone de texte. Mon problème est que ça ne compte pas les espaces ou les sauts de ligne. Comment puis-je le faire pour qu’il le fasse?
{{1500-createprofilefields.description.length}} Characters
C’est parce qu’angularJS a automatiquement coupé votre modèle.
Si vous utilisez angularJS 1.1.1 ou plus récent, ajoutez ng-sortingm="false"
à textarea
.
Exemple de travail: http://jsfiddle.net/9DbYY/
Avec Angular, textarea
a un argument optionnel appelé ngTrim
. Selon la page textarea angular :
Si la valeur est fausse, Angular ne rognera pas automatiquement l’entrée. (par défaut: true)
Usage:
Le code suivant montre comment utiliser ngTrim
pour empêcher Angular de couper l’entrée:
Character count {{15 - countmodel.length}} left
Notez que input[text]
a le même argument facultatif ngTrim
( page de saisie angular ).
Créer une directive nommée charCount
.directive('charCount', ['$log', '$timeout', function($log, $timeout){ return { ressortingct: 'A', comstack: function comstack() { return { post: function postLink(scope, iElement, iAttrs) { iElement.bind('keydown', function() { scope.$apply(function() { scope.numberOfCharacters = iElement.val().length; }); }); iElement.bind('paste', function() { $timeout(function () { scope.$apply(function() { scope.numberOfCharacters = iElement.val().length; }); }, 200); }); } } } } }])
Dans votre code HTML, appelez la directive char-count et accédez à la variable numberOfCharacters
Number of Characters: {{ numberOfCharacters }}
vous pouvez utiliser une fonction avec l’appel ng-change = “”
{{1500-chrLength}} Characters
et dans controller.js
$scope.countLength = function(val){ $scope.chrLength = val; }