2016-05-11 24 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> 

JS:それはWeb要求からいくつかの日付を選ぶとNGリピートで右のボックスに追加することになっている何

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日付の入力仕様はyyyy-MM-ddに等しい日付書式を指定するRFC3339のセクション5.6に依存しています。 (注:jsfiddleを実行すると、コンソールのエラーメッセージと同じです)。正確な形式で日付文字列を指定するだけです。http://jsfiddle.net/yxkvm0zm/1/

+1

ジャスト脇:[Chromeで入力[タイプ=日] ''上のGoogleのクイックよくある質問](https://でdevelopers.google.com/web/updates/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome)は、「プログラムでinput.valueを設定すると、値は '初期値とJavaScriptの注入値の両方の表示形式にかかわらず、「yyyy-mm-dd」スタイルを使用します。 (私はしばらく前にこれを乗り越えました...)。 – 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'); 
関連する問題