Привет, написал небольшую функцию для валидации чисел, где должны быть только часы и минуты:
// 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;
}
}
Смотрю, и думаю, есть ли что-то более короткое и адекватное? А то кажется бредом несусветным.