gpt4 book ai didi

javascript - AngularJS:使用 element.bind ('input' 访问自定义指令内的事件)

转载 作者:行者123 更新时间:2023-11-28 19:26:46 24 4
gpt4 key购买 nike

我必须编写一个自定义指令,因为我在编写韩语字符时需要访问用户输入。如 another post 中所述,我无法使用 keydown 或 keypress,因为在编写韩语字符时它们不会在正确的时间触发。 element.bind('input') 可以解决问题,但现在我面临另一个问题。

如果按下回车键,如何访问 element.bind 回调中的事件以退出/返回?

HTML

<input cst-input="quizzesCtrl.checkAnswer(answer)" name="answer" id="answer" ng-model="quizzesCtrl.answer" type="text" />

指令

.directive('cstInput', function() {
return {
restrict: 'A',
require: '^ngModel',
link: function (scope, element, attrs, ngModel) {
element.bind('input', function(event) {
if (event.which === 13) { return; } // can't access the event unless I bind to keypress etc
scope.$apply(function(){
scope.ngModel = element.val();
scope.$eval(attrs.cstInput, {'answer': scope.ngModel});
});
});
}
};
})

最佳答案

请注意;

输入:没有哪个属性并在按键后触发。也就是说,您可以在按键事件中绑定(bind)取消绑定(bind)input事件。输入事件也不会在 Enter 时触发。即 e.which==13 不需要验证。

退格时不触发keypress事件,如果退格时不需要检查值,则没有问题。

每个键都会触发

keydownkeyup 事件,您可以相互使用它们你可以尝试这样的事情。

.directive('cstInput', function() {
return {
restrict: 'A',
require: '^ngModel',
link: function (scope, element, attrs, ngModel) {
element.on('keypress', function(event) {
if (event.which === 13) { return; } // check key how you want
//attach input event
element.on('input', function(evt) {
scope.$apply(function(){
scope.ngModel = element.val();
scope.$eval(attrs.cstInput, {'answer': scope.ngModel});
});
//deatach event again
element.off('input')
});
});

//Alternatively using keydown with same way
element.on('keydown', function(event) {
if (event.which === 13) { return; } // check key how you want
//attach input event
element.on('input', function(evt) {
scope.$apply(function(){
scope.ngModel = element.val();
scope.$eval(attrs.cstInput, {'answer': scope.ngModel});
});
//deatach event again
element.off('input')
});
});

}
};
})

关于javascript - AngularJS:使用 element.bind ('input' 访问自定义指令内的事件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27760375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com