Создание списка выбора с шагом в целый час

0

Есть ли способ создать что-то вроде следующей разметки:

<select> 
    <option value="0000">00:00AM</option>
    <option value="0100">01:00AM</option>
    <option value="0200">02:00AM</option>
    <option value="0300">03:00AM</option>
    <!--rest of options omitted for brevity-->
</select>

... до 11:00 вечера,

Я использую Angular.

Каков наилучший способ сделать это?

  • 0
    Использовать Javascript ?? И у вас нет 23 в AM / PM
  • 0
    Да. и извините я редактирую свой вопрос

2 ответа

1
Лучший ответ

В некоторых контроллерах вы должны предварительно генерировать эти значения:

$scope.hours = {};

//first 12 hours
$scope.hours['0000'] = '12:00AM';
for(var i = 1; i < 12; ++i) {
    var hour = i < 10 ? '0' + i : i;
    $scope.hours[hour + '00'] = hour + ':00AM';
}

//last 12 hours
$scope.hours['1200'] = '12:00PM';
for(var i = 1; i < 12; ++i) {
    var hour = i < 10 ? '0' + i : i;
    $scope.hours[i + 12 + '00'] = hour + ':00PM';
}

И затем в вашем шаблоне:

<select> 
    <option ng-repeat="(value, label) in hours | orderBy: value" value="{{ value }}">
        {{ label }}
    </option>
</select>

Проверьте эту скрипту: http://jsfiddle.net/hspqfouq/1/

  • 0
    большое спасибо!
0

вы можете использовать следующий скрипт:

<select id="hours">

</select>
<script>
var data="";
for (var i=0;i<12;i++)
{

  d=i*1;
  d1="0";
  d2="00";
  if (i>9) {d1="";}
 data+="<option value='"+d1+d+d2+"'>"+d1+d+":"+d2+"AM</option>";
}
var s=document.getElementById("hours");
s.innerHTML=data;
</script>

вы можете увидеть живой результат в этой ссылке jsfiddle

Ещё вопросы

Сообщество Overcoder
Наверх
Меню