Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在AngularJS中左键单击时禁用焦点事件_Javascript_Angularjs_Datepicker_Angularjs Directive_Angular Strap - Fatal编程技术网

Javascript 仅在AngularJS中左键单击时禁用焦点事件

Javascript 仅在AngularJS中左键单击时禁用焦点事件,javascript,angularjs,datepicker,angularjs-directive,angular-strap,Javascript,Angularjs,Datepicker,Angularjs Directive,Angular Strap,我有一个角度带日期选择器,我只想右键点击显示 我想在默认的focus()方法上这样做,因为这样可以方便地在东西模糊时关闭它。为了对任何元素(如DIV)使用focus方法,我添加了一个tabindex 问题是,我似乎无法仅在左键单击时禁用焦点。它要么被完全禁用,要么同时为两者工作 我已经阻止右键单击时显示上下文菜单 directives.directive('ngRightClick', ["$parse", function($parse) { return function(scope,

我有一个角度带日期选择器,我只想右键点击显示

我想在默认的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中找到:

我知道有一些解决方案可以防止在这个站点上使用jQuery进行聚焦,但我需要它在右键单击时保持活动状态


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

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

ng右键单击
ng模糊
相结合,它将提供您想要的

<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:

回答得很好,非常感谢!我真的很感激:)谢谢你的指示。我已经对其进行了调整,以防止关注输入<代码>指令.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();});});};};}])