打开datepicker手动角度

时间:2016-12-12 10:58:38

标签: javascript angularjs datepicker angular-material

我无法以角度打开日期选择器。目标是获取日期范围,因此当我更改dateStart时,第二个日历应该自动打开,但它不会。

我错过了什么?

固定

似乎是开放式焦点指令

的问题

工作jsfiddle: http://jsfiddle.net/9dfLawtz/

var app = angular.module('myApp', ['ngMaterial']);

app.controller('MyCtrl', ['$scope','$timeout', function MyCtrl ($scope,$timeout) {

$scope.dateFormat = '';
$scope.dateEnd = '';
$scope.dateStart = '';

$scope.changeDateStart = function(){
  var myEl = angular.element( document.querySelector( '#dateEnd' ) );
  myEl.focus();
  $scope.test = true;
  myEl.parent().find("input").focus();
}

}]);

HTML:

<div ng-app="myApp">
<h2>Focus on each input and press 'enter' to see its name</h2>
<div ng-controller="MyCtrl">
<button ng-click="openDatePicker()">
Click 
</button>
 <md-datepicker id="dateStart" 
        ng-model="dateStart" ng-change="changeDateStart()">
    </md-datepicker>
            <md-datepicker id="dateEnd" 
        ng-model="dateEnd" md-placeholder="dateEnd" md-open-on-focus>
    </md-datepicker>
    <p>input : {{ dateFormat }}</p>
</div>

http://jsfiddle.net/hx5g5g95/

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题:

1-您的超时中使用的您的ID选择器未在您的元素中定义。所以你需要在元素中添加id =“dateEnd”,以便工作:

var myEl = angular.element( document.querySelector( '#dateEnd' ) );

2-您正在将名为dateEndOpened的变量设置为true并期望第二个变量打开,而您在ng-focus中使用了相同的变量,这是错误的,因为ng-focus期望{ {1}}而不是变量。

有关如何处理此问题的详细信息,请参阅此issue,但短版本是要添加

function

到你的第二个日期选择器。