Как заменить точку на запятую в input type=“number”?

146
15 мая 2019, 08:30

Как можно заменить точку на запятую в input type="number", при этом сохранить ввод отрицательных чисел и диапазон, установленный в HTML?

function doubleValidate(input) { 
    input.value = input.value.replace(/[.]/g, ","); 
}
<input type="number" class="form-control" asp-for="@item.TempAirBrest" name="TempAirBrest"  min="-99.0" max="99.0" step="0.1" required onkeypress="doubleValidate(this)"/>

Answer 1
  • Во-первых, событие onkeypress происходит до изменения значения поля.
  • Во-вторых, input.value для инпута с типом number возвращает знчение с точкой (даже если в поле отображается запятая).
  • В-третьих, input.value ожидает разделитель точку и отбросит строку после запятой.

Но раз вы всё равно делаете проверку, почему бы не добавить в неё и min/max ограниения заменив type на text? (Хотя возможно на телефонах тип number откроет цифровую клавиатуру, надо проверить)

Или меняйте разделитель не при вводе, а потом.

Обратите внимание, что с текстовыми полями не всё так просто. В них можно вставлять скопированное, автозаполнять плагинами и всякое такое. Событие onkeypress может и не произойти. Я обычно на фокус вешаю интервал с валидатором и убиваю его на блюр.

Answer 2

Ваш пример работает если функцию записать так:

fun = function(input) {
   input.value = input.value.replace(/[.]/g, ",");
}

И, соответственно, onKeyPress="fun(this)" jsfiddle

READ ALSO
.split is not a function

.split is not a function

Вроде гуглил и ошибка такая возникает когда передается не StringЗдесь вроде всё ок, но почему то ошибка

175
Как сформировать функцию, имея ее текст в качестве строки?

Как сформировать функцию, имея ее текст в качестве строки?

Как сформировать функцию, имея ее текст в качестве строки? Дискас

143
Прервать закрытие вкладки JavaScript [дубликат]

Прервать закрытие вкладки JavaScript [дубликат]

На данный вопрос уже ответили:

141