【问题标题】:Disable focus event on left click only in AngularJS仅在 AngularJS 中禁用左键单击焦点事件
【发布时间】:2014-08-09 06:26:45
【问题描述】:

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

我想在默认的 focus() 方法上做这件事,因为这便于在物体模糊后关闭它。为了在像 DIV 这样的任何元素上使用 focus 方法,我添加了一个 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 来阻止焦点,但我需要它以某种方式保持活跃状态​​以进行右键单击。

或者,如果有人有更好的方法来仅在右键单击时触发日期选择器(一旦用户单击其他任何地方它也会关闭),我也很想看看。

【问题讨论】:

  • 感谢 ngLeftNofocus 指令。我已经对其进行了调整以防止专注于输入。 directives.directive('preventFocus', ["$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(); }); }); }; }])

标签: javascript angularjs datepicker angularjs-directive angular-strap


【解决方案1】:

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

结合ng-right-clickng-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

【讨论】:

  • 很好的答案,非常感谢!我真的很感激:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多