angulaire de valider input type=“number”
J'ai majoration comme ceci:
<form name="myForm" ng-controller="myCtrl" novalidate>
<input ng-model="theValue" type="range" min="0" max="100" required>
<input ng-model="theValue" type="number" required></input>
<span ng-show="theValue.$error.number">Hey! No letters, buddy!</span>
</form>
Et je veux la plage à afficher lorsque l'utilisateur accidentellement une lettre dans la seconde entrée. Simple, non? Comme une (probablement) liées problème, la valeur de la deuxième entrée disparaît lorsque l'utilisateur déplace le premier curseur de saisie. Pourquoi? Cela n'arrive pas, si je retire type-number
de l'annotation.
Pour être clair: je veux que l'utilisateur de voir l'info-bulle d'erreur immédiatement lorsqu'il est tapé, sans aucun "soumettre". (Je préfère ne pas avoir à utiliser le form
éléments à tous, en fait, mais toutes les démos semblent l'exiger.)
Aucune solution de contournement est la plupart de bienvenue. Merci de poster un travail de violon si possible.
OriginalL'auteur Ben | 2013-06-30
Vous devez vous connecter pour publier un commentaire.
Il semble y avoir un drôle de problème avec
type="number"
jouer gentiment avec les autresinputs
.Les poteaux dans cette google groupes post devrait vous mettre sur la bonne voie. En particulier, le dernier post il y a: https://groups.google.com/forum/#!msg/angulaire/Ecjx2fo8Qvk/x6iNlZrO_mwJ
Le jsfiddle lien est: http://jsfiddle.net/ABE8U/
Que cela fonctionne, il a fait une directive:
De crédit à Schmuli Raskin
voir les exemples ici docs.angularjs.org/api/ng/input/input%5Bnumber%5D
Nan
2dd
retournera true. vous devriez vérifier avec!isNaN( parseFloat(obj) ) && isFinite( obj )
jsfiddle.net/ABE8U/148OriginalL'auteur jzm
Vous pouvez également utiliser ng-modèle validateur:
OriginalL'auteur zenio
J'ai mis à jour la directive de travailler avec ng-repeat filtres. Notez que le '$', qui est un caractère générique. La présente directive devrait poignée de 0 à l'amende juste. Il bascule sur le générique sur
OriginalL'auteur FesterCluck
jzm réponse a fonctionné pour moi jusqu'à ce que j'avais besoin de " 0 " comme une entrée. J'ai ajusté jzm code:
Remarquer l'ajout de la
if (value === 0)
bloc.Quelqu'un qui comprend JavaScript comparaisons logiques mieux que je ne pourrais probablement de créer plus d'un code élégant.
OriginalL'auteur Jeremy
jzm,s réponse est vraiment merveilleux tour et sauvé mon temps.
Je suis juste en prenant un pas de plus et le remplacement de
parseFloat(value)
avec ce qu'il fait réellement.OriginalL'auteur immirza