HTML de Saisie du Numéro enlève la virgule?
J'ai un problème avec le nombre d'entrée dans un formulaire. Quand je rentre un nombre, dire 88.2 et de le soumettre, il n'y a pas de problèmes. Mais, lorsque cette autre personne fait la même chose, vous pouvez le voir dans le code php si vous l'echo de la variable à partir du nombre d'entrée, qu'il a supprimé le point décimal (.
).
Il ne supprime pas son point décimal quand il utilise une virgule cependant, lorsque j'utilise une virgule il enlève que pour moi. Est-il possible de résoudre ce problème et de faire seulement accepter "." comme séparateur décimal point?
Voici l'entrée:
<input id="version" name="version" step="0.1" min="1.0" max="250.0" type="number" class="input-small" placeholder="87.2"></input>
Il n'y a rien dans le code PHP qui est inhabituel, seulement
echo $_POST['version'];
input-small css
:
.input-small {
width: 90px;
}
- Je crois
<input type="number">
accepte uniquement les entiers comme des valeurs valides. Tout décimales autorisées sont probablement erronée ou non mises en œuvre de la validation par le navigateur. - Remarque: les Européens d'utiliser une virgule pour une marque décimale. Pouvez-vous la force d'une culture de réglage quelque part?
- Je sais que nous utilisons différentes marques, mais il n'y a pas moyen de faire ne PAS supprimer la dot? Si l'autre gars entre dans 88.2 il se présente comme 882, c'est vraiment gênant.
- Je ne sais pas où ce serait, tout ce que je peux venir avec le Google est ASP.NET résultats.
- D'abord trouver ou de décider si elle se passe sur le navigateur ou sur le serveur. Étant donné que le serveur est constante, et les navigateurs et les paramètres régionaux sont différents, c'est sans doute dans le navigateur. (Ou le serveur est de la détection d'un paramètre du navigateur et de la réaction). Vous pouvez vérifier à l'aide de Fiddler ou certains renifler outil. Lors de votre recherche utilisez -asp.net pour filtrer asp.net hits. Quelqu'un d'autre a le même problème: zen-cart.com/...
Vous devez vous connecter pour publier un commentaire.
Soutien à
<input type=nombre>
est encore très limitée, incomplète, et le buggy.Par exemple, il n'y a pas de support sur 10 IE et Firefox 19. Sur eux, l'élément revient à un
<input type=text>
élément, ce qui signifie que n'importe quelle chaîne est accepté comme entrée et transmis au serveur en tant que tel, avec aucune vérification.Sur les navigateurs qui le supportent, tels que le Chrome, le comportement varie, et devrait varier, depuis le HTML5 CR définition intentionnellement la laisse ouverte: le navigateur est nécessaire pour fournir un widget pour les entrées numériques en quelque sorte, et de garantir que les données éventuellement envoyé du serveur est correct que par les attributs de l'élément (dans la plage donnée, etc.).
Dans la pratique, la mise en œuvre dépend de la paramètres régionaux du navigateur, et vous ne pouvez pas contrôler que comme un auteur. Cela signifie qu'un navigateur peut accepter 88.2, ou il pourrait accepter 88,2 (internes et de le convertir à 88,2), ou il peut accepter à la fois, ou il pourrait, en principe, d'accepter l'entrée en hiéroglyphes uniquement (et, en interne, de le convertir à la forme canonique). Il peut même analyser la saisie de l'utilisateur, de sorte que les caractères supplémentaires sont simplement jetés, ce qui signifie que 88FOO ainsi que de 88,2 risquent d'être tronqués 88 lors de la virgule est le séparateur décimal.
Ce qui se passe dans votre cas est difficile de décider, depuis les navigateurs et plates-formes n'ont pas été décrites, et il est difficile de savoir ce que le serveur reçoit. Mais la chose importante est que
<input type=number>
ne peut pas être invoqué, à tous. Il peut être utilisé dans un environnement contrôlé où tout le monde utilise la même version du même navigateur dans le même système d'exploitation, jusqu'à et y compris la version en langue et les paramètres régionaux. Sinon, utilisez<input type=text>
pour les entrées numériques et les analyser à l'entrée côté serveur et éventuellement pré-vérifier côté client, et assurez-vous d'informer l'utilisateur du format attendu d'entrée (comme la virgule décimale vs point décimal).type= "numéro" step= "tout" peut résoudre le problème.
http://dev.w3.org/html5/markup/input.number.html