Im создание веб-приложения, которое в основном предназначено для мобильных браузеров. Im использует поля ввода с типом номера, поэтому (большинство) мобильных браузеров вызывают только цифровую клавиатуру для лучшего удобства пользователя. Это веб-приложение в основном используется в регионах, где десятичный разделитель является запятой, а не точкой, поэтому мне нужно обрабатывать оба десятичных разделителя.
Как покрыть весь этот беспорядок точкой и запятой?
Мои выводы:
Настольный Chrome
- Тип ввода = номер
- Пользователь вводит "4,55" для ввода поля
-
$("#my_input").val();
возвращает "455" - Я не могу получить правильное значение из ввода
Настольный Firefox
- Тип ввода = номер
- Пользователь вводит "4,55" для ввода поля
-
$("#my_input").val();
возвращает "4,55" - Thats fine, я могу заменить запятую точкой и получить правильный float
Android-браузер
- Тип ввода = номер
- Пользователь вводит "4,55" для ввода поля
- Когда вход теряет фокус, значение усекается до "4"
- Смущение пользователю
Телефон Windows 8
- Тип ввода = номер
- Пользователь вводит "4,55" для ввода поля
-
$("#my_input").val();
возвращает "4,55" - Thats fine, я могу заменить запятую точкой и получить правильный float
Каковы "лучшие практики" в таких ситуациях, когда пользователь может использовать запятую или точку в качестве разделителя десятичных чисел, и я хочу сохранить тип ввода html как число, чтобы обеспечить лучший пользовательский интерфейс?
Могу ли я преобразовать запятую в точку "на лету", связав ключевые события, работает ли она с вводами цифр?
ИЗМЕНИТЬ
Currenlty У меня нет никакого решения, как получить значение float (как строку или число) от ввода, тип которого установлен в число. Если enduser входит в "4,55" , Chrome возвращается всегда "455", Firefox возвращает "4,55" , что хорошо.
Также довольно неприятно, что в Android (протестированный 4.2 эмулятор), когда я ввожу "4,55" в поле ввода и меняю фокус на другое место, введенное число обрезается до "4".