我使用以下代码通过ng-click加载了一个JQuery UI日期选择器:
输入:
<input type="text" id="datepicker" autocomplete="off" ng-model="selectedDate"
ng-click="showDatepicker()" placeholder="(Click to select date)">
JS:
$scope.showDatepicker = function() {
console.log('clicked');
// Load datepicker
$("#datepicker").datepicker();
}
但是,日期选择器不会在第一次单击时显示,仅在第二次单击时显示。如何解决这个问题,以便在第一次点击输入时显示?
答案 0 :(得分:1)
因为您在点击时启动了日期选择器。它应该在您单击之前启动,以便在您单击(或聚焦)
时实际工作所以添加
$("#datepicker").datepicker();
在控制器的开头,删除ng-click属性。它应该这样工作。
您可以通过在小提琴中的输入字段上单击两次来验证这一点。第二次它会起作用,因为它被启动
答案 1 :(得分:1)
function LoginController($scope) {
$scope.onLoad = function(){
$("#datepicker").datepicker();
}
$scope.showDatepicker = function() {
console.log('clicked');
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div ng-app ng-controller="LoginController" ng-init='onLoad()'>
<input type="text" id="datepicker" autocomplete="off" ng-model="selectedDate" ng-change="dateFilter('selectedDate')" ng-click="showDatepicker()" placeholder="(Click to select date)">
</div>
在初始化时创建datepicker实例。