Téléphone: clavier numérique pour la saisie de texte
Est-il un moyen pour forcer le clavier numérique de venir sur le téléphone pour un <input type="text">
? Je viens de réaliser que <input type="number">
en HTML5 est pour “les nombres à virgule flottante”, de sorte qu'il n'est pas adapté pour les numéros de carte de crédit, codes postaux, etc.
Je veux émuler le numérique-la fonctionnalité de clavier de <input type="number">
, pour les entrées qui prennent des valeurs numériques autres que des nombres à virgule flottante. Est-il, peut-être, une autre input
type qui fait ça?
- Il n'y a pas une grande réponse pour les codes postaux. J'ai re-demandé cette question à l'échelle internationale codes postaux ici: stackoverflow.com/questions/25425181/...
- J'ai trouvé une hackish façon de le faire ..sorte de: stackoverflow.com/a/25599024/1922144
- À compter de la mi-2015, il y a une meilleure manière de faire ceci: stackoverflow.com/a/31619311/806956
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire
<input type="text" pattern="\d*">
. Cela va entraîner le clavier numérique à apparaître.Voir ici pour plus de détails: Texte, le Web et l'Édition de Guide de Programmation pour iOS
HTML:
\d*
ne fonctionne pas et[0-9]
est nécessaire. Notez que cela fonctionne avectype='numeric'
. Ce qui est suggéré sur la base de ces documents de référence pour le code postal.<input type="number" step="0.01">
À compter de la mi-2015, je crois que c'est la meilleure solution:
Cela vous donnera le pavé numérique à la fois Android et iOS:
Il vous donne également le bureau attendu comportement avec les touches haut/bas et un clavier convivial flèche haut/bas touche incrémentation:
Essayer dans cet extrait de code:
HTML:
En combinant les deux
type="number"
etpattern="[0-9]*
, nous obtenons une solution qui fonctionne partout. Et, de son avant compatible avec la future HTML 5.1 proposéinputmode
attribut.Remarque: l'Utilisation d'un modèle de déclencher le navigateur natif de la validation du formulaire. Vous pouvez désactiver cette fonction à l'aide de la
novalidate
attribut, ou vous pouvez personnaliser le message d'erreur échec de la validation à l'aide de latitle
attribut.Si vous avez besoin d'être en mesure de saisir les zéros non significatifs, des virgules, ou de lettres internationale, par exemple, des codes postaux - découvrez cette variante légère.
Crédits et plus lecture:
http://www.smashingmagazine.com/2015/05/form-inputs-browser-support-issue/
http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios-numeric-keypad/
type="number"
spec dit Les attributs de contenu ne doit pas être spécifié et ne s'appliquent pas à l'élément: ... inputmode<input type="text" inputmode="numeric">
et il veut les navigateurs mobiles à regarderinputmode
afin de déterminer si elle montre un pavé numérique ou un clavier complet. Puisque aucun des navigateurs prennent en chargeinputmode
, je suis pas certain de savoir comment sa va être mis en œuvre sur un ordinateur de bureau vs les navigateurs mobiles. Ex: Va les navigateurs de bureau permettent lettre de taper dans<input type="text" inputmode="numeric">
? Si oui, c'est un problème.<input type="number">
empêche ce, en ne permettant numéros. Peut-être que nous allons devoir attendre jusqu'à ce que les navigateurs commencer à mettre en œuvre et ensuite, nous pouvons mettre à jour cette réponse.type="number"
est décent, mais il peut afficher un compteur qui ne fait pas beaucoup de sens pour, par exemple, 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 le "code secret"-comme des champs, de faire quelque chose comme
<input type="tel" />
finit par produire le plus authentique nombredomaine, et il a également l'avantage de pas autoformatting. Par exemple, dans une application mobile que j'ai développé pour Hilton récemment, j'ai fini par aller avec ceci:... et mon client a été très impressionné.
HTML:
number
forces des règles strictes pour le nombre dans la plupart des navigateurs. Si l'utilisateur ajoute de l'espace (ou virgule) pour séparer les milliers, vous n'obtiendrez pas n'IMPORTE quelle valeur de l'entrée. Oui, même en JavaScriptinput.value
sera vide. D'entrée de typetel
n'est pas limité au format spécifique de sorte que l'utilisateur peut continuer d'alimenter quoi que ce soit et de validation est un processus distinct (pour le développeur de la poignée).À l'aide de la
type="email"
outype="url"
vous donnera un clavier sur certains téléphones, au moins, comme l'iPhone. Pour les numéros de téléphone, vous pouvez utilisertype="tel"
.Il y a un danger avec l'aide de la
<input type="text" pattern="\d*">
pour afficher le clavier numérique. Sur firefox et chrome, l'expression régulière contenues dans le modèle entraîne le navigateur pour valider la saisie de l'expression. erreurs se produisent si elle ne correspond pas au modèle ou est laissé vide. Être conscient de ces actions dans d'autres navigateurs.novalidate
attribut sur le contenantform element
devrait le faire avec l'auto-validation de problèmes. Assurez-vous de faire la validation de certains sur votre propre.Pour moi, la meilleure solution était:
Pour des nombres entiers, ce qui amène le 0-9 pad sur android et iphone
Vous pouvez aussi le faire pour cacher les fileuses dans firefox/chrome/safari, la plupart des clients pensent qu'ils moche
Et ajouter novalidate='novalidate" pour votre élément de formulaire, si vous faites de validation personnalisée
Ps juste au cas où vous en fait voulu des nombres à virgule flottante après tout,l'étape de quelle que soit la précision de fantaisie, d'ajouter un '.' pour android
Je pense que
type="number"
est le meilleur pour la sémantique de la page web. Si vous voulez juste changer le clavier, vous pouvez utilisertype="number"
outype="tel"
. Dans les deux cas, l'iPhone ne fait pas de restreindre la saisie de l'utilisateur. L'utilisateur peut encore tapez (ou copiez-collez) tous les caractères qu'il/elle veut. Le seul changement est le clavier affiché à l'utilisateur. Si vous souhaitez que toute restriction au-delà de cela, vous avez besoin d'utiliser le JavaScript.type="number"
est pour flotter.type="text"
est pour la chaîne. Ce que vous voulez vraiment est un entier. Je pense que le flotteur est plus proche de l'entier de la chaîne. Qu'en pensez-vous?01920
à1920
.2018:
est à la fois pour Android et iOS.
J'ai testé sur Android (^4.2) et iOS (11.3)
Vous pouvez essayer comme ceci:
Mais attention: Si votre entrée contient autre chose qu'un nombre, il ne sera pas transmis au serveur.
Je n'arrivais pas à trouver un type qui a le mieux fonctionné pour moi dans toutes les situations: j'avais besoin de défaut pour numérique entrée (entrée de "7.5", par exemple), mais aussi, à certains moments, permettent au texte ("pass" par exemple). Les utilisateurs voulais un clavier numérique (entrée de 7,5 par exemple) mais il y a parfois de saisie de texte a été nécessaire ("pass" par exemple).
Plutôt ce que j'ai fait a été d'ajouter une case à cocher pour la forme et de permettre à l'utilisateur de basculer mon entrée (id="inputSresult") entre type="number" et type="texte".
Puis j'ai câblé un gestionnaire de clic sur la case à cocher qui permet de basculer le type entre le texte et le numéro de la base si la case est cochée:
Cela a bien fonctionné pour nous.
essayez ceci:
consulter: https://answers.laserfiche.com/questions/88002/Use-number-field-input-type-with-Field-Mask