Как установить числовое значение, содержащее запятую и десятичную точку, на номер типа ввода

0

У меня есть тег ввода в html

<input type="number" id="Amount" placeholder="Please enter somthing" />

Я устанавливаю значение этого ввода, используя jQuery, например:

$('#Amount').val("78,000.00");

Я не могу установить это значение, если я не изменю тип тега ввода как "текст". Я также применил шаблон regex как:

<input type="number" id="Amount" placeholder="Please...." pattern="/^[0-9.,]+$/" />

Как решить эту проблему?

Теги:

2 ответа

2

Вам нужно установить значение, используя стандартную нотацию в формате JavaScript и HTML, без разделителя тысяч и с периодом в качестве разделителя десятичных чисел:

$('#Amount').val("78000.00");

Или, может быть, еще лучше, используя простой JavaScript, поскольку его мертвый простой и позволяет избежать проблемы "как могут работать разные версии jQuery в этом случае?":

document.getElementById('Amount').value = '78000.00';

Элемент HTML5 <input type=number> использует стандартный формат JavaScript и HTML для внутреннего значения. Только пользовательский интерфейс для ввода значения может быть локализован, согласно языку браузера (фундаментальный дефект дизайна IMHO). Поэтому, когда вы используете локаль с запятой в качестве разделителя тысяч, вы можете ввести 78 000, но браузер должен преобразовать ее в 78000. Аналогично, начальное значение должно быть указано в стандартном (интернационализированном) формате, а не в локализованном формате).

Атрибут pattern не разрешен в <input type=number>. Причина в том, что браузер должен знать шаблон разрешенных номеров и использовать его.

  • 0
    Спасибо за объяснение. Но проблема в том, что этот код работает на Android Phone. Таким образом, он автоматически отображает цифровую клавиатуру, если type установлен на «number», что в точности соответствует моим требованиям. Есть ли обходные пути для использования запятой, но с сохранением <input type = "number"> ??
  • 0
    Боюсь, что нет обходного пути. Вы можете использовать inputmode=numeric как определено в проекте HTML 5.1, и надеяться, что он будет реализован.
0

Абдул, попробуйте использовать

<input type="text" id="Amount" pattern="[0-9.,]+" />

Кажется, это работает.

  • 0
    Спасибо Раджеш. но у меня есть требование, чтобы сохранить тип ввода = "число".
  • 1
    Это работает для проверки ввода (например, в angular ng-модель корректно недопустима, когда есть буквы), однако, в отличие от type = "number", она не мешает вводить эти нечисловые символы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню