Выпадающий список с 1440 записями просто не будет использоваться.
Как насчет обычного текстового поля, чтобы пользователи могли просто вводить время, которое они хотят, быстро (и ввод по-прежнему будет работать без JavaScript), в сочетании с элементами управления прокруткой вверх / вниз, если вам это нужно:
<input type="text" class="spin-time" value="00:00">
<script type="text/javascript">
// Find and apply to elements with class `spin-time`
//
var inputs= document.getElementsByTagName('input');
for (var i= inputs.length; i-->0;)
if (inputs[i].className==='spin-time')
addTimeSpinner(inputs[i]);
function addTimeSpinner(input) {
input.onchange= function() { alterTime(0); };
input.parentNode.insertBefore(makeButton('-', -60), input);
input.parentNode.insertBefore(makeButton('+', 60), input);
input.parentNode.insertBefore(makeButton('+', 1), input.nextSibling);
input.parentNode.insertBefore(makeButton('-', -1), input.nextSibling);
function makeButton(label, d) {
var button= document.createElement('input');
button.type= 'button';
button.value= label;
button.onclick= function() { alterTime(d); };
return button;
}
function alterTime(d) {
// Parse time value, default to 00:00 if doesn't make sense
//
var mins= 0;
var match= input.value.match(/^(\d\d):(\d\d)$/);
if (match!==null)
mins= parseInt(match[1], 10)*60+parseInt(match[2], 10);
// Add time difference, wrapping round
//
mins= (mins+d+1440)%1440;
// Format back to hh:mm string
//
input.value= padLeft(Math.floor(mins/60), 2, '0')+':'+padLeft(mins%60, 2, '0');
}
function padLeft(v, n, c) {
v+= '';
if (v.length>=n) return v;
return new Array(n-v.length+1).join(c)+v;
}
}
</script>
Это круглосуточно. Изменение кода для синтаксического анализа и создания 12-часового формата часов (включая ужасную бородавку с получением 12:00 и 00:00 в правильном направлении) остается в качестве упражнения для тех, кто не полностью ненавидит идею 12-часовых часов. и хотят, чтобы он был искоренен с Земли.
person
bobince
schedule
01.11.2010
<select>
с 1440 элементами? Арх. Почему бы не разделить это на два раскрывающихся списка0..23
и0..59
? - person Pekka   schedule 01.11.2010