【问题标题】:change event is not getting triggered in angular js角度 js 中未触发更改事件
【发布时间】:2016-02-18 08:26:37
【问题描述】:

我是 Angular js 的新手。我的应用程序中有一个引导日历。在月份更改时,需要触发更改事件。但无论我把它放在哪里,它都不会被触发。

请在下面找到sn-p。

angular.element(document).ready(function() {
    console.log('page loading completed');
    $('#datetimepicker').datepicker({
        inline : true,
        sideBySide : true,
        useCurrent : false,
        firstDay : 1
    }); 
    $(".ui-datepicker-month").on('change',function() {
        alert("change event triggered")
    });
}); 

请帮助我。

谢谢, 普罗纳

【问题讨论】:

  • 我建议您查看 UI-Bootstrap,它是所有引导指令以 Angular 方式完成的,使用 jQuery 通常是不行的(除非它在指令中)链接:angular-ui.github.io/bootstrap
  • 试试这个:$(document).on('change', '.ui-datepicker-month', function() { alert("change event triggered") });
  • 感谢您的回复。但它不起作用
  • @PoornaMurali 你能提供你的html代码吗?
  • 跨度>

标签: javascript jquery angularjs twitter-bootstrap


【解决方案1】:

你应该在 DDO 中做这些事情(指令定义对象)。假设这是您的元素日期选择器:

<input type='text' data-datetimepicker="" id='datetimepicker'>  
<!---our directive------^^^^^^^^^^^^^^----------------------->

然后你可以像这样创建你的指令:

myApp.directive('datetimepicker', function() {
  return {
    restrict: 'A', //<---A for attribute
    link: function(scope, el, attrs) {
      el.find('input').datetimepicker().on('dp.change', function() {
          console.log("change event triggered");
        });
    }
  };
});

var myApp = angular.module('dateApp', []);
myApp.directive('datetimepicker', function() {
  return {
    restrict: 'A', //<---A for attribute
    link: function(scope, el, attrs) {
      el.find('input').datetimepicker().on('dp.change', function() {
          $(this).after("change event triggered");
        });
    }
  };
});
div {
  position: relative;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker-standalone.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>

<div ng-app='dateApp'>
  <div id='datetimepicker' data-datetimepicker="">
    <input type='text'>
    <!---our directive------^^^^^^^^^^^^^^----------------------->
  </div>
</div>

【讨论】:

  • change 事件在您离开 blur 事件之类的元素时触发。你也可以使用input 事件。
  • 嗨,杰。 datetimepicker 在我的情况下是一个 div 元素,正如你所说,我尝试了输入和更改事件。它没有触发。请在下面找到sn-p。
  • dlcModule.directive('datetimepicker', function(){ return { restrict:'A', //
  • @PoornaMurali 我以为你有一个 jQuery datepicker,但它是 bootstrap 的 datetimepicker,所以你可以使用 datetimepicker 的 dp.change 自定义事件。添加了一个工作代码sn-p。看看它是如何运作的。
猜你喜欢
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 2021-03-15
  • 2019-03-27
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多