angularjs force majuscules dans la zone de texte
J'ai essayé d'utiliser les majuscules filtre mais il ne fonctionne pas. J'ai essayé de le faire de deux façons:
<input type="text" ng-model="test" uppercase/>
et
<input type="text" ng-model="{{test | uppercase}}"/>
La 2ème déclenche une erreur javascript:
Erreur de syntaxe: Jeton "test" est inattendu, attend [:]
Je veux que le texte soit forcé de majuscules à mesure que l'utilisateur tape dans la zone de texte.
Comment puis-je le faire?
Vous devez vous connecter pour publier un commentaire.
Veuillez voir la réponse ci-dessous, qui est supérieure à celle-ci.
cette réponse est fondée sur la réponse ici: Comment autocapitalize le premier caractère dans un champ de saisie dans AngularJS?.
J'imagine que ce que vous voulez serait un analyseur de fonction comme ceci:
JS:
HTML:
$parsers
et$formatters
n'ont pas été mise à jour le contrôle d'entrée. Ajouter les appels à$setViewValue
et$render
a fait le tour. Je vais demander à l'angle de l'équipe de l'ajouter à la documentation.var selection = element[0].selectionStart; modelCtrl.$setViewValue(capitalized); modelCtrl.$render(); element[0].selectionStart = selection; element[0].selectionEnd = selection;
La accepté de répondre à causes des problèmes si quelqu'un essaie d'entrer dans une lettre minuscule au début d'une chaîne existante.. Le curseur se déplace à la fin de la chaîne après chaque pression sur la touche. Voici une solution simple qui aborde toutes les questions:
Ici un violon:
http://jsfiddle.net/36qp9ekL/1710/
$(element)
etelement
sont équivalentes.L'idée est de montrer (pas de transformation), la chaîne en majuscules à côté client et de la transformer en majuscules à côté serveur (les utilisateurs peuvent toujours contrôler ce qui se passe à côté client). Donc:
1) dans le code html:
ici pas de majuscules transformation.
2) dans le css:
de données est indiqué en majuscules, mais, en fait, toujours en minuscules, si l'utilisateur a tapé en minuscules.
3) mettez la chaîne en majuscules à côté serveur lors de l'insertion en base de données.
= = = = =
pour jouer, vous pouvez essayer de suivre:
mais je pense que ng-modification ou ng-flou moyens ne sont pas nécessaires pour votre cas.
Vous ne pouvez pas faire un filtre sur ng-model car c'est cessible. la solution est soit de l'analyseur, ou tout simplement ng-changement.
Cela devrait fonctionner.
Lorsqu'il est utilisé avec Bootstrap, il suffit d'ajouter
text-uppercase
à l'entrée de l'attribut de classe.::-webkit-input-placeholder { text-transform: none; } ::-moz-placeholder { text-transform: none; } :-ms-input-placeholder { text-transform: none; } input:-moz-placeholder { text-transform: none; }
. Ajouter.text-uppercase
à ce cours si nécessaire.voici mon violon http://jsfiddle.net/mzmmohideen/36qp9ekL/299/
ng-pattern
je suis aide à la validation d'une adresse MAC à l'aide d'une regex. Des idées sur comment je peux obtenir à la fois pour le travail? jsfiddle.net/630dkL15Cela ne fonctionnera pas du tout.
ng-model
pour préciser le champ de la propriété du champ d'application devrait être lié au modèle. Aussi,ng-model
ne pas accepter une expression comme valeur. Expressions dans angular.js sont des choses entre{{
et}}
.La
uppercase
filtre utilisé dans la production et partout où les expressions sont autorisés.Vous ne pouvez pas faire ce que vous voulez faire, mais vous pouvez utiliser le CSS,
text-transform
au moins à l'écran tout en majuscules.Si vous voulez avoir la valeur d'un champ de texte en majuscules, vous pouvez obtenir un peu de JavaScript personnalisé.
Dans votre contrôleur:
N'oubliez pas d'inclure " ngSanitize' dans votre module!
});
Payer l'attention sur les "?" dans "exiger: '?ngModel',"... c'est alors seulement travaillé ma demande.
"si(inputValue) {...}" Pour non-non défini erreur se produit
Lors de l'utilisation de bootstrap:
Première approche: à l'Aide de texte de la classe-les majuscules
Deuxième approche: à l'Aide de style qui peut être appliqué avec la classe existante
Voici mon stackBlitz: https://angular-nvd7v6forceuppercase.stackblitz.io
c'est juste une alternative , vous pouvez utiliser ce "text - transform : capitalize ;" dans votre css et la saisie de texte seront capitalisés. à moins que l'utilisateur tape en lettres majuscules partout.
c'est juste une solution de rechange ^^
Pour améliorer la réponse par Karl Zilles c'est ma révision de sa solution.
Dans ma version de l'espace réservé n'est pas changé, en majuscules et fonctionne aussi si vous voulez faire un regex sur la chaîne. Il prend aussi le "type" de la chaîne d'entrée (null ou undefined ou vide):
Solution avec le curseur maj correctif
Je voudrais juste utiliser le filtre lui-même dans le contrôleur:
il suffit de garder à l'esprit que, si vous vous allez l'utiliser à l'intérieur d'un contrôleur, par exemple, vous avez besoin d'injecter de ce filtre: