HTML Number Input удаляет десятичную точку?

У меня проблема с вводом числа в форме. Когда я ввожу число, скажем 88.2 и отправляю его, проблем нет. Но когда этот другой человек делает то же самое, вы можете увидеть в php-коде, если вы выводите переменную из числового ввода, что она удалила десятичную точку (.).

Это не удаляет его десятичную точку, когда он использует запятую, однако, когда я использую запятую, это удаляет это для меня. Есть ли способ исправить это и заставить его принимать только "." как десятичная точка?

Вот's вход:


В коде PHP нет ничего, чтотолько необычно:

echo $_POST['version'];

input-small css

.input-small {
  width: 90px;
}
 Jesper Hallenberg21 февр. 2013 г., 03:16
Я знаю, что мы используем разные метки, но нет ли способа сделать так, чтобы НЕ удалялась точка? Если другой парень входит в 88.2, он становится 882, это действительно раздражает.
 James Coyle21 февр. 2013 г., 03:00
я верю в качестве допустимых значений принимаются только целые числа. Любые разрешенные десятичные знаки, вероятно, неверны / не реализованы в браузере.
 Jesper Hallenberg21 февр. 2013 г., 04:36
@ SteveWellens я неНе знаю, где это будет, все, что я могу придумать в Google - это результаты ASP.NET.
 Steve Wellens21 февр. 2013 г., 03:14
Примечание: европейцы используют запятую для десятичного знака. Можете ли вы где-нибудь форсировать обстановку?
 Steve Wellens21 февр. 2013 г., 06:22
@JesperHallenberg - сначала выясните / решите, происходит ли это в браузере или на сервере. Так как сервер постоянен, а браузеры и локаль различны, он 'Возможно, в браузере. (Или сервер определяет настройки браузера и реагирует на них). Вы можете проверить, используя Fiddler или какой-либо инструмент для анализа. При поиске используйте -asp.net, чтобы отфильтровать попадания asp.net. У кого-то есть такая же проблема:zen-cart.com/...

Ответы на вопрос(2)

Поддержка все еще очень ограничен, неполон и глючит.

Например, в IE 10 и Firefox 19 отсутствует поддержка. На них элемент возвращается к элемент, который означает, что любая строка принимается в качестве входных данных и передается на сервер как таковой, без проверки.

В браузерах, которые его поддерживают, таких как Chrome, поведение меняется и, как ожидается, будет другим, поскольку HTML5 CRопределение намеренно оставляет его открытым: браузер должен каким-то образом предоставить виджет для числового ввода и гарантировать, что данные, в конечном итоге отправленные на сервер, являются правильными согласно атрибутам элемента (в пределах заданного диапазона и т. д.).

На практике реализация зависит отлокаль браузераи вы не можете контролировать это как автор. Это означает, что браузер может принять 88,2, или он может принять 88,2 (и внутренне преобразовать его в 88,2), или он может принять оба, или он, в принципе, может принять ввод только в иероглифах (и внутренне преобразовать его в каноническая форма). Он может даже анализировать вводимые пользователем данные, так что любые лишние символы просто отбрасываются, что означает, что 88FOO, а также 88.2 могут быть усечены до 88, когда запятая является десятичным разделителем.

Что происходит в вашем случае, трудно решить, так как браузеры и платформы не были описаны, и неясно, что получает сервер. Но важно то, что на него нельзя положиться. Его можно использовать в контролируемой среде, где все используют одну и ту же версию одного и того же браузера в одной и той же операционной системе, вплоть до языковой версии и настроек локали. В противном случае используйте для числового ввода и синтаксического анализа ввода на стороне сервера и при необходимости предварительно проверьте его на стороне клиента, и убедитесь, что вы информируете пользователя об ожидаемом формате ввода (например, десятичная запятая или десятичная точка).

Ваш ответ на вопрос