J'utilise le validateur d' outils jQuery qui implémente les validations HTML5 via jQuery. Cela fonctionne très bien jusqu'à présent, sauf pour une chose. Dans la spécification HTML5, le type d'entrée "nombre" peut avoir à la fois des nombres entiers et des nombres à virgule flottante. Cela semble incroyablement à courte vue car il ne sera un validateur utile que lorsque vos champs de base de données sont des nombres à virgule flottante signés (pour les entrées non signées, vous devrez revenir à la validation de "modèle" et ainsi perdre des fonctionnalités supplémentaires comme le haut et le bas). flèches pour les navigateurs qui le prennent en charge). Existe-t-il un autre type d'entrée ou peut-être un attribut qui restreindrait l'entrée aux seuls entiers non signés? Je n'en ai pas trouvé, merci.
ÉDITER
Ok, les gars, j'apprécie votre temps et votre aide, mais je vois beaucoup de votes positifs non mérités: D. La définition de l'étape à 1 n'est pas la réponse car elle ne restreint pas l'entrée. Vous pouvez toujours saisir un nombre à virgule flottante négatif dans la zone de texte. De plus, je suis au courant de la validation des modèles (je l'ai mentionné dans mon message d'origine), mais cela ne faisait pas partie de la question. Je voulais savoir si HTML5 permettait de restreindre une entrée de type "nombre" à des valeurs entières positives. Il semble que la réponse à cette question serait «non, ce n'est pas le cas». Je ne voulais pas utiliser la validation de modèle car cela provoque certains inconvénients lors de l'utilisation de la validation jQuery Tools, mais il semble maintenant que la spécification ne permette pas une manière plus propre de le faire.
la source
number
entrée (dans FF / Chrome / Safari au moins) accepte désormais uniquement les entiers par défaut, sauf si vous définissez une valeur explicite pour l'step
attr qui autorise les valeurs décimales; par exemple:step="0.01"
. MDN documenté ici . Dans deux esprits à ce sujet parce que je pense que c'est un défaut raisonnable, mais aussi un changement de rupture (oui, cela a affecté un certain code que j'ai écrit).Réponses:
https://www.w3.org/wiki/HTML/Elements/input/number
Le meilleur que vous puissiez obtenir avec HTML uniquement
la source
min
à1
comme il veut des nombres positifs (et non des nombres non négatifs).<input type="number" min="0" step="1"/>
est la réponse la plus correcte à la question. Quoi qu'il en soit, à quoi bon avoir les deuxstep="1"
etpattern="\d+"
? Je ne peux pas saisir de nombres à virgule flottante dans les deux cas.Définissez l'
step
attribut sur1
:Cela semble un peu bogué dans Chrome en ce moment, donc ce n'est peut-être pas la meilleure solution pour le moment.
Une meilleure solution consiste à utiliser l'
pattern
attribut, qui utilise une expression régulière pour faire correspondre l'entrée:\d
est l'expression régulière d'un nombre,*
ce qui signifie qu'il accepte plusieurs d'entre eux. Voici la démo: http://jsfiddle.net/b8NrE/1/la source
number
qui contient d'autres caractères, Chrome vous affichera un message d'erreur.submit
de déclencher la publication./\d*/.test(1.1) // true
pattern="\d*"
n'est pas identique à/\d*/
,pattern="\d*"
est égal à/^(?:\d*)$/
, veuillez vous référer à la documentation des attributs de modèle HTML5 .En utilisant ce code, l'entrée dans le champ de texte limite pour entrer uniquement des chiffres. Le modèle est le nouvel attribut disponible dans HTML 5.
Doc d'attribut de modèle
la source
La manière simple d'utiliser JavaScript:
la source
replace(/(\..*)\./g, '$1')
.
une seule fois, par exemple123.556
peut être écrit.Le motif est sympa mais si vous voulez restreindre l'entrée aux nombres uniquement avec type = "text", vous pouvez utiliser oninput et une regex comme ci-dessous:
Je préviens pour moi :)
la source
Ce n'est pas seulement pour html5 tous les navigateurs fonctionnent bien. essaye ça
la source
oninput
placeMotif sont toujours préférables pour la restriction, essayer
oninput
etmin
produire 1 pour entrer des chiffres de 1 à compterla source
avez-vous essayé de définir l'
step
attribut sur 1 comme celui-cila source
Peut-être que cela ne convient pas à tous les cas d'utilisation, mais
peut faire du bon travail: violon .
Consultez la documentation .
la source
Oui, HTML5 le fait. Essayez ce code ( w3school ):
Voir le paremètre min et max? Je l'ai essayé en utilisant Chrome 19 (fonctionnait) et Firefox 12 (ne fonctionnait pas).
la source
Mettez-le simplement dans votre champ de saisie:
onkeypress='return event.charCode >= 48 && event.charCode <= 57'
la source
Je travaillais sur Chrome et j'ai eu quelques problèmes, même si j'utilise des attributs html. Je me suis retrouvé avec ce code js
la source
Set
step="any"
. Fonctionne bien. Référence: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/la source
D'après les spécifications
Vous pouvez donc simplement le définir sur
1
:la source
Définissez l'
step
attribut sur n'importe quel nombre flottant, par exemple 0,01 et vous êtes prêt à partir.la source
la source
Actuellement, il n'est pas possible d'empêcher un utilisateur d'écrire des valeurs décimales dans votre entrée avec HTML uniquement. Vous devez utiliser javascript.
la source
la source
Dans le futur ™ (voir Puis-je utiliser ), sur les agents utilisateurs qui vous présentent un clavier, vous pouvez restreindre une saisie de texte à seulement numérique avec
input[inputmode]
.la source
inputmode
est principalement destiné aux appareils portables et déclenchera la disposition correcte du clavier, mais pour les ordinateurs "normaux" avec claviers, il n'empêchera pas d'entrer ce que vous voulez.