javascript – 仅在AngularJS中左键单击禁用焦点事件

我有一个角度带式日期选择器,我只想在右键单击时显示.

这个我想做的是默认的focus()方法,因为这很容易在它模糊时关闭它.要在像DIV这样的任何元素上使用焦点方法,我添加了一个tabindex.

问题是,我似乎无法仅在左键单击时禁用焦点.它要么完全禁用,要么两者兼而有之.

我已经阻止右键单击显示上下文菜单.

directives.directive('ngRightClick', ["$parse", function($parse) {
  return function(scope, element, attrs) {
    var fn = $parse(attrs.ngRightClick);
    element.bind('contextmenu', function(event) {
        scope.$apply(function() {
            event.preventDefault();
            fn(scope, {$event:event});
        });
    });
  };
}])

对于左键单击,我尝试过preventDefault(),但这并没有真正起作用.然后我试图在点击上模糊它,这有效,但焦点事件仍然预先调用,只有几分之一秒.

directives.directive('ngLeftNofocus', ["$parse", function($parse) {
  return function(scope, element, attrs) {
    var fn = $parse(attrs.ngLeftNofocus);
    element.bind('click', function(event) {
        scope.$apply(function() {
            event.preventDefault();
            element[0].blur();
        });
    });
  };
}])

这一切都可以在Plnkr:http://plnkr.co/edit/T2YBYwfqSLKxCUL0ITgk?p=preview中找到

我知道有一些解决方案可以防止在这个网站上使用jQuery进行焦点,但是我需要它以某种方式保持活跃的右键单击.

或者,如果某人有更好的方法只在右键单击时触发日期选择器(一旦用户点击其他地方它也会关闭),我也很乐意看到它.

解决方法:

您可以使用bs-show属性手动切换日期选择器.

结合ng-right-click和ng-blur,它将提供您想要的效果.

<div bs-datepicker ng-model="test" tabindex="1"
    data-trigger="manual"
    bs-show="showDatePicker"
    ng-blur="showDatePicker = false"
    ng-right-click="showDatePicker = true">CLICK HERE</div>

示例Plunker:http://plnkr.co/edit/zJXdZOIZ9XQey3BkQ3I2?p=preview

上一篇:android – setMinDate()for DatePicker


下一篇:java – datepickerdialog隐藏日历并将我的日期选择器视图更改为标准模式