html
<input type="text" onkeyup="validate_number(this)" onpaste="validate_number(this)"/>
script.js
function validate_number(el, float = false) { if(el.value.length != 0) { let value = el.value; let value_parts = [0]; // change every ',' to '.' value = value.replace(/\,/g, '.'); // delete every char except numbers and dots value = value.replace(/[^0-9\.]+/g, ''); // lets check if someone wrote dot let dot = value[value.length - 1] == '.' && float ? '.' : ''; if(value) { // value exist so lets divide it - for numbers with multiple dots value_parts = value.match(/[0-9]+/g); // first number should be parsed to int for situations like '023' value_parts[0] = parseInt(value_parts[0]); } if(value_parts.length == 1 || value_parts.length > 1 && !float) { el.value = value_parts[0] + dot; } else { el.value = value_parts[0] + '.' + value_parts[1]; } } }