2016-05-11 3 views
0

У меня есть некоторая логика, которую я упростил в этом JSFiddle: http://jsfiddle.net/r7vyjg4h/ и это работает.Добавление даты в поле ввода даты Угловое

HTML:

<div ng-controller="MyCtrl"> 
<div ng-repeat="line in lines"> 
    <div style="display: inline-block"> 
     {{line.id}} 
    </div> 
    <div style="display: inline-block"> 
     <input type="text" ng-model="line.date" /> 
    </div> 
    </div> 
    <input type="button" ng-click="update()" value="update" /> 
</div> 

ЯШ:

function MyCtrl($scope) { 
    $scope.lines = [{ 
     id:"1", 
     date: new Date() 
     },{ 
     id:"2", 
     date: new Date() 
     },{ 
     id:"3", 
     date: new Date() 
     } 
     ]; 
     var newDates = [{id:"1", date: new Date('10-10-2010 10:10:10')}, {id:"3", date: new Date('11-11-2011 11:11:11')}]; 

     $scope.update = function(){ 
     for(var i = 0; i < newDates.length;i++){ 
      for(var j = 0; j < $scope.lines.length; j++){ 
       if($scope.lines[j].id == newDates[i].id){ 
        $scope.lines[j].date = newDates[i].date; 
       } 
      } 
      } 
     } 

Что она делает это поднимает некоторые даты из веб-запроса и, как предполагается, чтобы добавить его в нужные коробки в нг-повтора. Пока это все еще работает правильно.

Но когда я изменить тип входного сигнала от текста к дате, ничего не происходит. Значения, которые я выбираю, верны, но элементы даты не обновляются.

http://jsfiddle.net/vd347sfa/

Что я здесь отсутствует? Я делаю что-то неправильно ?

ответ

1

HTML,-5 Дата ввода спецификации основывается на разделе 5.6 RFC3339, который определяет формат даты, равный yyyy-MM-dd. (Примечание: это именно сообщение об ошибке в консоли при запуске jsfiddle). Вам просто нужно указать строку даты в правильном формате: http://jsfiddle.net/yxkvm0zm/1/

+1

Просто в сторону: [Quick FAQs Google, на 'ввода [тип = дата]' в Chrome] (https: // developers.google.com/web/updates/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome) явно указывает: «При программном программировании« input.value »значение принимает только' yyyy-mm-dd', независимо от формата презентации как для начального значения, так и для введенного значения JavaScript ». (Я споткнулся об этом сам некоторое время назад ...). – user1924627

0

Причина, по которой его не отражать в поле ввода даты, является то, что форматирование.

Поле ввода даты ищет формат mm/dd/yyyy и вы предоставляете 10-10-2010 10:10:10 в этом формате.

Вы можете использовать эту функцию для преобразования даты в формат toISOString(), и это должно сделать трюк.

Там вы идете проверить это решение:

var newDates = [{id:"1", date: new Date('10-10-2010 10:00:00').toISOString().substring(0, 10)},{id:"2", date: new Date('10-10-2010 11:00:00').toISOString().substring(0, 10)}, {id:"3", date: new Date('11-11-2011 12:00:00').toISOString().substring(0, 10)}]; 

http://jsfiddle.net/vd347sfa/3/

0

Необходимо указать дату и время в соответствующем формате. правильный способ сделать это:

var newDates = [{id:"1", date: new Date('2010', '10', '10', '10', '10', '10')}, 
{id:"3", date: new Date('2011', '11', '11', '11','11','11')}]; 

формат:

new Date('yyyy', 'mm', 'dd', 'hh', 'mm', 'ss'); 
Смежные вопросы