HTML5 zone de saisie avec type=“nombre” n'accepte pas de virgule dans le navigateur Chrome
Je suis à l'aide d'un HTML5 zone de saisie avec type="number"
. Quant à certains de la documentation, il devrait être possible de saisir un nombre à virgule (pas avec la période) si j'utilise également le lang=""
attribut. Il fonctionne dans Firefox, mais pas dans Chrome (n'accepte pas une virgule). Comment puis-je obtenir Chrome pour accepter la virgule dans la zone d'entrée.
Mon problème est que nos utilisateurs allemands s'attendre à ce que, il peut entrer une virgule au lieu d'une période là.
https://jsfiddle.net/byte2702/y3Lpfw7m/
Please enter a number with comma: <br/>
<input id="num" type="number" step="any" lang="de" pattern="-?[0-9]+[\,.]*[0-9]+" />
Je pense que cela dépend du client configuration locale. Firefox est bon, mais Chrome ne marche tout simplement pas l'admettre. La solution de contournement peut être détecter le moment où le flou ou de soumettre se produit, puis de remplacer le point par une virgule avec javascript.
Ici au Brésil, nous utilisons des virgules. Vous pouvez utiliser un simple saisie de texte et faire un peu de Javascript trucs avec elle. Par exemple, vous pouvez créer deux boutons juste pour simuler le fonctionnement de la saisie du numéro.
Je vais l'essayer. Merci beaucoup à vous deux. J'avais déjà le type="texte" dans l'esprit, mais je voulais essayer type="number" en premier.
Lorsque "simulant la saisie du numéro de" vous êtes en négligeant tous les utilisateurs de téléphonie mobile qui permettrait de voir un certain nombre de clavier sur un
Nous avons pu résoudre le problème avec var newValue = valeur.replace(/,/g,"."); retour ensuite. Il fonctionne bien sur les ordinateurs de bureau et également les appareils mobiles. Notre client a des millions de visiteurs de site web, beaucoup d'entre eux utilisent des appareils mobiles. Personne ne s'est plaint encore. Nous avons également effectué des tests approfondis sur Android et iOS dispositifs par nous-mêmes.
Ici au Brésil, nous utilisons des virgules. Vous pouvez utiliser un simple saisie de texte et faire un peu de Javascript trucs avec elle. Par exemple, vous pouvez créer deux boutons juste pour simuler le fonctionnement de la saisie du numéro.
Je vais l'essayer. Merci beaucoup à vous deux. J'avais déjà le type="texte" dans l'esprit, mais je voulais essayer type="number" en premier.
Lorsque "simulant la saisie du numéro de" vous êtes en négligeant tous les utilisateurs de téléphonie mobile qui permettrait de voir un certain nombre de clavier sur un
type="number"
champ de saisie. Ref: stackoverflow.com/q/3372380/1066234Nous avons pu résoudre le problème avec var newValue = valeur.replace(/,/g,"."); retour ensuite. Il fonctionne bien sur les ordinateurs de bureau et également les appareils mobiles. Notre client a des millions de visiteurs de site web, beaucoup d'entre eux utilisent des appareils mobiles. Personne ne s'est plaint encore. Nous avons également effectué des tests approfondis sur Android et iOS dispositifs par nous-mêmes.
OriginalL'auteur Jana Weschenfelder | 2016-02-10
Vous devez vous connecter pour publier un commentaire.
Dès maintenant (30/08/2017), Antoine Thiry la réponse semble être plus valable dans Chrome (ma version est 60.0.3112.113). Malheureusement je n'ai pas d'autre suggestion, autres que la simulation type="number" avec javascript.
Après l'avoir essayé tous les, qui semble être la seule chose qui fonctionne dans Chrome.
La réponse/solution existe encore, comme l'a souligné à de nombreuses reprises. Rien n'a été supprimé. Voir la section commentaire ci-dessous ma question. J'ai suivi Phiter de la suggestion et résolu avec var newValue = valeur.replace(/,/g,".");.Il a donc été résolu avec JavaScript (jQuery). Depuis le remplacement de la fonction est une fonction de base, j'avais accepté cette solution.
J'ai maintenant compris ce que tu voulais dire. J'ai supprimé ma réponse précédente. Je ne savais pas que vous étiez en ligne à l'instant même où j'ai posté ma réponse. Ma dernière réponse était obsolète, alors.
Bien que cette réponse ne fournir une suggestion sur la façon de résoudre le problème, la moitié de la réponse est une référence à une autre réponse (par Antoine Thiry) dont je ne trouve aucune trace de. Quelque chose a probablement été supprimé ou quelqu'un changement de nom, mais je ne pense que ce "bancales" pointeur est ennuyeux...
OriginalL'auteur Ogier
en fait, si j'ai lu la documentation correctement,
pattern
est pas pris en charge pourtype=number
. par conséquent, s'en tenir àtype=text
puis ajouterpattern="..."
de l'extrémité avant de la validation. dans l'étape suivante, vous aurez alors besoin de convertir la saisie de texte en un nombre réel si ce n'était pas compatible avec JavaScript/calcul de format.2017 et toujours pas de bonne solution à ce problème commun...
en fait, la question est de cibler les navigateurs de bureau, si je ne me trompe pas. pour les navigateurs mobiles le décrit problème n'existe pas en tant que l'OS mobile prend soin de bonne séparateurs décimaux, de toute façon. Donc, si vous, @MartinDawson souhaitez cibler à la fois les systèmes et les utilisateurs de partout dans le monde, vous devez générer votre entrée avec différents types en fonction du navigateur pour l'expérience parfaite.
Nous avions résolu le problème avec la saisie de texte et de JavaScript. Voir la section commentaires ci-dessous ma question, en particulier les réponses de Phiter et ma dernière réponse. La solution fonctionne dans les navigateurs web de bureau et aussi mobile navigateurs internet.
OriginalL'auteur Jörn Berkefeld
Que pour l'instant, j'ai essayé
ou
et qu'il me laisse à l'entrée de tout: la virgule ou le point. Je l'ai testé sur le bureau Ubuntu et mobile Android, Firefox et Chrome.
Juste testé en Chrome 68.0.3440.75 Construit sur Ubuntu , en cours d'exécution sur Ubuntu 16.04 et Firefox, et je peux écrire 0.5 ou 0,5, ou .5, ou 5 et de l'utiliser en javascript calculs ou dans un script php. Mais je suis juste utiliser en, pas en-US
Désolé, mon commentaire d'origine n'était pas claire. Je n'utilisez lang="fr" dans le HTML, il était en Chrome que j'avais configuré dans les paramètres régionaux en-US. Configuration d'un exemple à jpm5omvnl5.codesandbox.io : je ne peux pas écrire 0,5 mais je peux écrire 0.5. Dans la requête, mon Chrome envoie
accept-language: fi-FI,fi;q=0.9,en-US;q=0.8,en;q=0.7
(l'OS sous-jacent est dans fi-FI, ressemble à Chrome comprend, en dépit de Chrome de configuration). Version de Chrome est 68.0.3440.106 (Officiel) (64-bit), le système d'exploitation est Windows 10 Pro. Pourrait être un OS/paramètres régionaux de différence?Je suis tombé dans Daniel Aleksandersen blog de HTML5 nombre d'entrées – Virgule et de point comme séparateur décimal marques, qui a un tableau de l'analyse input type="number" de comportement avec les différents lang combinaisons en html et dans l'entrée. Basé sur la table, les navigateurs semblent réagir différemment à ces; certains permettent à la fois de virgule et de point d'autres n'en ont pas.
Oui, j'ai eu des cas, quand j'ai vu les petites différences entre les mêmes navigateurs dans Windows et Linux. Aussi parfois doctype affecter. J'ai vu ce post, j'avais essayé fr-150 et cela n'a pas fonctionné pour moi. Pour s'assurer, qu'il n'est pas travail pour vous, de faire des petits test HTML suivant
OriginalL'auteur Sergey S