Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Валидация для Input со значениями для часов и минут (https://javascript.ru/forum/dom-window/82136-validaciya-dlya-input-so-znacheniyami-dlya-chasov-i-minut.html)

Янковиц 18.03.2021 18:45

Валидация для 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 19:24

Янковиц,
:-?


Часовой пояс GMT +3, время: 00:24.