Настроить десятичную точку вместо запятой в вводе номера HTML5 (на стороне клиента)

Я видел, что некоторые браузеры локализуют нотацию чисел input type="number" .

Итак, теперь, в полях, где мое приложение отображает координаты долготы и широты, я получаю материал вроде «51,983», где он должен быть «51.982559». Моим обходным путем является использование input type="text" вместо этого, но я хотел бы использовать ввод числа с правильным отображением десятичных знаков.

Есть ли способ заставить браузеры использовать десятичную точку ввода количества, независимо от локальных настроек на стороне клиента?

(Разумеется, в моем приложении я все равно исправляю это на стороне сервера, но в моей настройке мне также нужно, чтобы это было правильно на стороне клиента (из-за некоторого JavaScript)).

Заранее спасибо.

ОБНОВЛЕНИЕ На данный момент, проверяя в Chrome версии 28.0.1500.71 m в Windows 7, ввод номера просто не принимает десятичные знаки, отформатированные с запятой. Предлагаемые предложения с атрибутом step не работают.

http://jsfiddle.net/AsJsj/

С атрибутом шага, указанным для точности десятичных знаков, которые вы хотите, ваш числовой ввод html5 будет принимать десятичные значения. например. принимать значения, подобные 10,56; Я имею в виду 2 десятичных числа, сделайте следующее:

  

Вы можете дополнительно указать атрибут max для максимально допустимого значения.

Изменить Добавить атрибут lang в элемент ввода с использованием значения языкового стандарта, которое форматирует десятичные знаки с точкой вместо запятой

В настоящее время Firefox отличает язык HTML-элемента, в котором находится вход. Например, попробуйте эту скрипту в Firefox:

http://jsfiddle.net/ashraf_sabry_m/yzzhop75/1/

Вы увидите, что цифры указаны на арабском языке, а запятая используется как десятичный разделитель, что соответствует арабскому. Это связано с тем, что тегу BODY присваивается атрибут lang="ar-EG" .

Затем попробуйте следующее:

http://jsfiddle.net/ashraf_sabry_m/yzzhop75/2/

Этот символ отображается с точкой в ​​виде разделителя с десятичной запятой, потому что ввод завернут в DIV учетом атрибута lang="en-US" .

Таким образом, решение, к которому вы можете прибегнуть, состоит в том, чтобы объединить ваши числовые входы с элементом контейнера, который настроен на использование культуры, которая использует точки в качестве разделителя десятичных чисел.

Согласно спецификации , вы можете использовать any значение атрибута step :

  

К сожалению, охват этого поля ввода в современных браузерах очень низок:

http://caniuse.com/#feat=input-number

Поэтому я рекомендую рассчитывать на резервную копию и полагаться на загруженный с тяжелой загрузкой ввод [type = text] для выполнения задания, пока это правило не будет принято.

Пока что только Chrome, Safari и Opera имеют аккуратную реализацию, но все другие браузеры не работают. Некоторые из них даже не поддерживают десятичные знаки (например, BB10)!

Я не знаю, помогает ли это, но я наткнулся на эту проблему, только с входной точки зрения (т.е. я заметил, что мой принимал как запятую, так и точку, когда набрав значение, но только последнее связано с моделью угловой j, назначенной на вход). Поэтому я решил, записав эту краткую директиву:

 .directive("replaceComma", function() { return { restrict: "A", link: function(scope, element) { element.on("keydown", function(e) { if(e.keyCode === 188) { this.value += "."; e.preventDefault(); } }); } }; }); 

Затем, на моем html, просто: будет заменять запятые точками «на лету», чтобы пользователи не вводили неверные данные (с точки зрения javascript, а не локальный номер!). Приветствия.

Я нашел статью в блоге, которая, как представляется, объясняет что-то связанное: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

В итоге:

  • step помогает определить область допустимых значений
  • step по умолчанию: 1
  • таким образом, домен по умолчанию является целым числом (между min и max , включительно, если задано)

Я бы предположил, что это связано с двусмысленностью использования запятой в виде разделителя на тысячу разделителей против запятой в виде десятичной точки, а ваши 51,983 – это, по сути, странно разобранные пятьдесят одна тысяча девятьсот восемь три.

Очевидно, вы можете использовать step="any" чтобы расширить область до всех рациональных чисел в диапазоне, однако я сам не пробовал. Для широты и долготы я успешно использовал:

   

Возможно, это некрасиво, но это работает.

Изменить: обновленная ссылка https://www.isotoma.com/blog/2012/03/02/html5-input-typenumber-and-decimalsfloats-in-chrome/

1) 51,983 – номер строкового типа, не принимающий запятую

поэтому u должен установить его как текст

  

заменить .

и изменить тип атрибута на число

 $(document).ready(function() { var s = $('#commanumber').val().replace(/\,/g, '.'); $('#commanumber').attr('type','number'); $('#commanumber').val(s); }); 

Проверьте http://jsfiddle.net/ydf3kxgu/

Надеюсь, это решит вашу проблему

Насколько я понимаю, input type="number HTML5 input type="number всегда возвращает input.value как string .

По-видимому, input.valueAsNumber возвращает текущее значение как число с плавающей запятой. Вы можете использовать это, чтобы вернуть нужное значение.

См. http://diveintohtml5.info/forms.html#type-number

Вы рассматривали использование Javascript для этого?

$('input').val($('input').val().replace(',', '.'));

один параметр – javascript parseFloat() … никогда не javascript parseFloat() « text chain" --> 12.3456 с точкой в ​​int … 123456 (int удаляет точку) анализирует текстовую цепочку в FLOAT …

чтобы отправить эти коорды на сервер, отправляйте текстовую цепочку. HTTP отправляет только TEXT

в клиенте не удается разобрать входные координаты с помощью « int », работать с текстовыми строками

если вы печатаете шнуры в html с php или похожим … float to text и печатаете в html

Использовать lang атрибут на вкладке. Locale на моем веб-приложении fr_FR, lang = “en_EN” на номере ввода, и я могу без разницы использовать запятую или точку. Firefox всегда отображает точку, Chrome показывает запятую. Но оба партнера действительны.

использовать шаблон

  

удачи

  • В чем разница между (типом) значением и типом (значением)?
  • Как Python 2 сравнивает строку и int? Почему списки сравниваются больше, чем числа, а кортежи - больше, чем списки?
  • Как установить значение составного поля переменных с помощью динамического SQL
  • c ++ конвертировать из LPCTSTR в const char *
  • Почему Java-коллекции не могут напрямую хранить типы примитивов?
  • Все ли указатели данных одинакового размера на одной платформе для всех типов данных?
  • Давайте будем гением компьютера.