按下两次时绑定到空格键(32)keyup / down

时间:2016-07-07 14:57:35

标签: javascript jquery angularjs lodash

我正在使用Angular JS,我需要编写一个指令,只有当空格键(32)连续按两次时才会启动一个函数。该应用程序还具有表单,用户可能需要在textarea或输入字段中实际两次占用空间,因此我们也需要考虑这一点。我们还需要确保在按空格键时页面不滚动,但是要执行event.preventDefault();实际上阻​​止了空格键用于在表单元素中键入空格。有关如何实现这一点的任何想法?它甚至可能吗?如果这太难了,我可能会考虑绑定到一个组合键。以下是我目前的样本:

(function() {
  "use strict";

  angular
    .module("app.spaceFunc")
    .directive("triggerFunc", triggerFunc);

  triggerFunc.$inject = ["$window"];
  /* @ngInject */
  function triggerFunc($window) {
    var directive = {
      link: link,
      restrict: "A"
    };
    return directive;

    function link(scope, element, attrs) {
      var upHitOnce = false;
      angular.element($window).bind("keydown", function(event) {
        if ((event.keycode || event.which) === 32) {
          //Prevents page scrolling (spacebar default's behaviour)
          event.preventDefault();
          if (upHitOnce) {
            //some function gets executed here
            console.log("Spacebar pressed twice");
            upHitOnce = false;
          } else {
            upHitOnce = true;
          }
        } else {
          upHitOnce = false;
        }
      });
    }
  }
})();

该指令附加到body元素

<body trigger-func>

0 个答案:

没有答案