Existe-t-il un moyen de forcer le clavier numérique à apparaître sur le téléphone pour un <input type="text">
? Je viens de me rendre compte qu'en <input type="number">
HTML5 est destiné aux «nombres à virgule flottante», donc il ne convient pas aux numéros de carte de crédit, aux codes postaux, etc.
Je souhaite émuler la fonctionnalité de clavier numérique de <input type="number">
, pour les entrées qui prennent des valeurs numériques autres que des nombres à virgule flottante. Y a-t-il peut-être un autre input
type approprié qui fait cela?
Réponses:
Vous pouvez le faire
<input type="text" pattern="\d*">
. Cela fera apparaître le clavier numérique.Voir ici pour plus de détails: Guide de programmation de texte, Web et d'édition pour iOS
la source
\d*
cela ne fonctionne pas et[0-9]
est nécessaire. Notez que cela fonctionnera avectype='numeric'
. Ceci est suggéré en fonction de la référence des documents liés pour le code postal.À la mi-2015, je pense que c'est la meilleure solution:
Cela vous donnera le clavier numérique sur Android et iOS:
Il vous donne également le comportement attendu du bureau avec les boutons fléchés haut / bas et les touches fléchées haut / bas conviviales pour le clavier:
Essayez-le dans cet extrait de code:
En combinant les deux
type="number"
etpattern="[0-9]*
, nous obtenons une solution qui fonctionne partout. Et, il est compatible avec le futurinputmode
attribut proposé HTML 5.1 .Remarque: l'utilisation d'un modèle déclenchera la validation du formulaire natif du navigateur. Vous pouvez désactiver cela à l'aide de l'
novalidate
attribut ou personnaliser le message d'erreur en cas d'échec de la validation à l'aide de l'title
attribut.Si vous avez besoin de pouvoir saisir des zéros, des virgules ou des lettres non significatifs, par exemple des codes postaux internationaux, consultez cette légère variante .
Crédits et lectures complémentaires:
http://www.smashingmagazine.com/2015/05/form-inputs-browser-support-issue/ http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios- clavier numérique/
la source
type="number"
spécification HTML5 indique que les attributs de contenu suivants ne doivent pas être spécifiés et ne s'appliquent pas à l'élément: ... inputmode<input type="text" inputmode="numeric">
et que les navigateurs mobiles les examinentinputmode
pour déterminer si elles affichent un pavé numérique ou un clavier complet. Comme aucun navigateur ne prend en chargeinputmode
, je ne sais pas comment il sera mis en œuvre sur les navigateurs de bureau par rapport aux navigateurs mobiles. Ex: les navigateurs de bureau autoriseront-ils la saisie de lettres<input type="text" inputmode="numeric">
? Si c'est le cas, c'est un problème.<input type="number">
empêche cela, n'autorisant que les nombres. Nous devrons peut-être attendre que les navigateurs commencent à l'implémenter, puis nous pourrons mettre à jour cette réponse.type="number"
est décent , mais il peut afficher un spinner qui n'a pas beaucoup de sens pour, par exemple, les numéros de carte de crédit.This attribute applies when the value of the type attribute is text, search, tel, url, email, or password, otherwise it is ignored.
J'ai trouvé que, au moins pour les champs de type "code d'accès", faire quelque chose comme
<input type="tel" />
finit par produire le champ le plus authentique orienté vers les nombres et cela a également l'avantage de ne pas mettre en forme automatique . Par exemple, dans une application mobile que j'ai récemment développée pour Hilton, j'ai fini par utiliser ceci:... et mon client a été très impressionné.
la source
number
impose des règles strictes pour le nombre dans de nombreux navigateurs. Si l'utilisateur ajoute un espace (ou une virgule) pour séparer les milliers, vous n'obtiendrez AUCUNE valeur de l'entrée. Oui, même en JavaScriptinput.value
sera vide. La saisie du typetel
n'est pas limitée à un format spécifique, de sorte que l'utilisateur peut toujours saisir quoi que ce soit et la validation est un processus distinct (que le développeur doit gérer).L'utilisation du
type="email"
outype="url"
vous donnera au moins un clavier sur certains téléphones, comme l'iPhone. Pour les numéros de téléphone, vous pouvez utilisertype="tel"
.la source
Il y a un danger à utiliser
<input type="text" pattern="\d*">
pour faire apparaître le clavier numérique. Sur Firefox et Chrome, l'expression régulière contenue dans le modèle oblige le navigateur à valider l'entrée de cette expression. des erreurs se produiront s'il ne correspond pas au modèle ou s'il est laissé vide. Soyez conscient des actions involontaires dans d'autres navigateurs.la source
novalidate
attribut sur le conteneurform element
devrait résoudre les problèmes de validation automatique. Assurez-vous de faire une validation par vous-même.Avec Inputmode, vous pouvez donner un indice au navigateur.
la source
Je pense que
type="number"
c'est le meilleur pour la page Web sémantique. Si vous souhaitez simplement changer de clavier, vous pouvez utilisertype="number"
outype="tel"
. Dans les deux cas, l'iPhone ne restreint pas l'entrée de l'utilisateur. L'utilisateur peut toujours taper (ou coller) les caractères qu'il souhaite. Le seul changement est le clavier montré à l'utilisateur. Si vous souhaitez une restriction au-delà de cela, vous devez utiliser JavaScript.la source
type="number"
est pour le flotteur.type="text"
est pour la chaîne. Ce que vous voulez vraiment, c'est un entier. Je pense que float est plus proche d'un entier que d'une chaîne. Qu'est-ce que tu penses?01920
à1920
.Pour moi, la meilleure solution était:
Pour les nombres entiers, ce qui fait apparaître le pavé 0-9 sur Android et iPhone
Vous pouvez également le faire pour masquer les filateurs dans firefox / chrome / safari, la plupart des clients trouvent qu'ils ont l'air moche
Et ajoutez novalidate = 'novalidate' à votre élément de formulaire, si vous faites une validation personnalisée
Ps juste au cas où vous vouliez réellement des nombres à virgule flottante après tout, passez à la précision que vous souhaitez, ajoutera '.' à android
la source
En 2018:
fonctionne à la fois pour Android et iOS.
J'ai testé sur Android (^ 4.2) et iOS (11.3)
la source
Vous pouvez essayer comme ceci:
Mais attention: si votre entrée contient autre chose qu'un nombre, elle ne sera pas transmise au serveur.
la source
Je ne pouvais pas trouver un type qui fonctionnait le mieux pour moi dans toutes les situations: je devais par défaut une entrée numérique (entrée de "7.5" par exemple) mais aussi à certains moments autoriser le texte ("passer" par exemple). Les utilisateurs voulaient un pavé numérique (entrée de 7,5 par exemple) mais une saisie de texte occasionnelle était requise («pass» par exemple).
J'ai plutôt ajouté une case à cocher au formulaire et permettre à l'utilisateur de basculer mon entrée (id = "inputSresult") entre type = "number" et type = "text".
Ensuite, j'ai câblé un gestionnaire de clics à la case à cocher qui bascule le type entre le texte et le nombre en fonction du fait que la case ci-dessus est cochée:
Cela a bien fonctionné pour nous.
la source
il vous donnera une saisie de texte à l'aide du clavier numérique
la source
Vous pouvez utiliser l'
inputmode
attribut html:Pour plus de détails, consultez le document MDN en mode d'entrée .
la source
essaye ça:
référez-vous: https://answers.laserfiche.com/questions/88002/Use-number-field-input-type-with-Field-Mask
la source