У меня есть тег ввода в 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.,]+$/" />
Как решить эту проблему?
Вам нужно установить значение, используя стандартную нотацию в формате 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>
. Причина в том, что браузер должен знать шаблон разрешенных номеров и использовать его.
Абдул, попробуйте использовать
<input type="text" id="Amount" pattern="[0-9.,]+" />
Кажется, это работает.
inputmode=numeric
как определено в проекте HTML 5.1, и надеяться, что он будет реализован.