我有一个名为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键时,控制台都会记录“向上按键!”两次。它应该只运行一次,每次UP按键运行两次。
谁能告诉我这里我做错了什么?
答案 0 :(得分:1)
你应该尝试添加
event.stopImmediatePropagation() ;
后
event.preventDefault();