Добрый день!
Впервые встречаюсь с JS, а тут понадобилось добавить маску к input type. В приборе ограниченное количество памяти, а из библиотек подключено только zepto.min.js.
Смог родить следующий код, и есть вопрос, возможно ли его ещё как-то улучшить?
Например перенести функцию, чтобы отказаться от oninput свойства, а делалось все по совпадению с $('').on('', function().
Или же в zepto есть аналог нужной мне функции.
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<label>IPv4</label>
<input type="text" id="ipv4" class="ip-number" placeholder="xxx.xxx.xxx.xxx" oninput="ipv4_inputmask(this)">
<script>
function ipv4_inputmask(obj)
{
var oсtet = obj.value.match(/\./g);
oсtet = (oсtet === null) ? 0 : oсtet.length;
var last_byte = Number(obj.value.split('.')[oсtet]);
var last_byte_len = obj.value.split('.')[oсtet].length;
var last_symb = obj.value.substr(-1);
var srt_slice = obj.value.slice(0, -1);
if (last_symb === '.') // Нажатие .
{
if (oсtet < 4) // Переход к следующему октету
obj.value = srt_slice + last_symb;
else // Не даем ввести символ
obj.value = srt_slice;
}
else if ((last_byte > 255) || (last_byte_len == 4)) // Текущий октет больше байта
{
if (oсtet < 3) // Перенести последний символ в следующий октет
obj.value = srt_slice + '.' + last_symb;
else // Не даем ввести символ
obj.value = srt_slice;
}
}
$('.ip-number').on('input', function() {
$(this).val($(this).val().replace(/[^0-9.]/, ''))
});
</script>
</body>
</html>