Есть input
$html="<input type='text' size='6' name='valot$name' id='valot$id' class='valot$id' placeholder='{$fieldtitle} от' value='$valsa'/>"
Далее данные уходят через "return $html;"
Как сделать чтобы значения вводимые в input(числа) разделялись на пробелы(разрядность), а в "return $html;" отправлялись уже без пробелов(разрядности). То есть человек вводит в input 10000 ему видно было это как 10 000 а в "return $html;" данные инпутов отправлялись уже без пробелов 10000
Самый простой способ уже был описан на SO пользователем @gyc:
$('#number').on("keyup", function() {
this.value = this.value.replace(/ /g,"");
this.value = this.value.replace(/\B(?=(\d{3})+(?!\d))/g, " ");
});
Суть в следующем: просто на каждое нажатие пользователя, с помощью регулярки вставляем пробел в места, где число делится на разряды, и заменяем оригинальное значение инпута.
Если интересуют более сложные способы, то, например тут приведён пример форматирования интупа для конкретной локали.
Что касается PHP-части, то здесь достаточно просто удалить пробелы из числа (и можно ещё на всякий случай привести значение к int):
$string = (int)str_replace(' ', '', $_POST['valot']);
если вы используете AJAX тогда при отправке парсите это поле .replace(/\D/g,'')
Если же вы отправляете на сервер обычно тогда парсить придется на сервере, увы в php я плохо разбираюсь
function razr(){
var val = parseFloat(this.value.replace(/\D/g,''));
this.value = val.toLocaleString();
}
valot.addEventListener("input",razr);
<input type='text' size='6' name='valot$name' id='valot' class='valot' placeholder='placeholder'/>
123
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости