Показать сообщение отдельно
  #1 (permalink)  
Старый 18.03.2021, 18:45
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Валидация для Input со значениями для часов и минут
Привет, написал небольшую функцию для валидации чисел, где должны быть только часы и минуты:
// max может быть 12, 24 или 59
// соответственно числа могут быть в пределах 1-12, 00-24, 00-59
function validateTime( el, max ) {
	var _max = String( max ),
		_pos = el.selectionStart;
	
	// пропускаем только числа от 0 до 9
	el.value = el.value.replace( /[^0-9]+/g, '' );
	
	var next = el.nextElementSibling;
	if( el.value[0] ) {
		if( _pos === 1 ) {
			el.value = el.value[0];
		}
		// запрещаем ввод более 2 чисел
		if( el.value.length > 2 ) {
			el.value = el.value.slice( 0, -1 );
		}
		if( el.hasAttribute( 'data-hour' ) && ( el.value[1] === '0' && el.value[0] === '0' ) ) {
			el.value = el.value.slice( 0, -1 );
			return;
		}
		// если в поле первое число больше первого числа из максимального, фокус на следующий input в dom дереве
		if( el.value[0] > _max[0] || _pos == 2 ) {
			if( next.nodeName === 'INPUT' ) {
				next.focus();
				next.setSelectionRange(0, 0);
			}
		}
	}
	
	if ( el.value > max ) {
		el.value = max;
	}
}


Смотрю, и думаю, есть ли что-то более короткое и адекватное? А то кажется бредом несусветным.

Последний раз редактировалось Янковиц, 18.03.2021 в 18:53.
Ответить с цитированием