我有一个名为 myEnter 的指令,它附加到 html 中的输入框。 代码如下:
app.directive('myEnter', function () {
return function (scope, element, attrs) {
element.bind("keydown", function (event) {
if(event.which === 13) {
$(".window").animate({ scrollTop: $("#scr").height() }, 1000);
scope.$apply(function (){
scope.$eval(attrs.myEnter);
});
event.preventDefault();
}
if(event.which === 38) {
console.log("up key pressed!");
$(".window").animate({ scrollTop: $("#scr").height() }, 1000);
scope.$apply(function (){
var arr = scope.history;
console.log(scope.history);
console.log(arr);
});
event.preventDefault();
}
});
};
});
发生的事情是,它正在检测输入按键。 另外,正如您所看到的,我还让它检测输入框中的“UP”按键。
这两件事都运作良好。但是,每当我按下向上键时,控制台都会记录“向上键已按下!”两次。它应该只运行一次,而每按一次 UP 按键,它就会运行两次。
谁能告诉我我在这里做错了什么?
最佳答案
你也许应该尝试添加
event.stopImmediatePropagation() ;
之后
event.preventDefault();
关于javascript - 为什么我的指令被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43393100/