ng-keyup preventDefault()不起作用

时间:2015-07-19 14:51:12

标签: javascript angularjs

我知道它远非一个最佳实践,但我真的想了解什么是错的。 我编写了以下代码,以区分Enter和shift + Enter,并运行"代码"我需要:

ng-keyup="($event.keyCode == 13 && !$event.shiftKey)
?
  [$event.preventDefault(),
   commentCtrl.edit(comment.id, comment.text),
   comment.edit=false, comment.text]
:
  return"

当我按回车键时,我仍然会在文字中添加一个\ n :(

请帮助!〜

4 个答案:

答案 0 :(得分:1)

将此内容写入您的HTML

 <input type="text"  ng-keypress="restrictInput($event)" />


 $scope.restrictInput=function(e)
   e.prevenDefault();
 }

答案 1 :(得分:0)

最终编写了一个阻止它的指令......

(function() {
    'use strict';

angular
    .module('PreventEnterDrc', [])
    .directive('preventEnter', function () {
        return {
            restrict: 'A',
            link: function(scope, element) {
                element.bind('keydown keypress keyup', function (event) {
                    if(event.keyCode == 13 && !event.shiftKey){
                        event.preventDefault();
                    }
                });
            }
        };
    })
;
})();

答案 2 :(得分:0)

啊哈!您有“错误”指令!我刚刚将我的应用程序从ng-keyup更改为ng-keypress,现在$ event.preventDefault()可以正常工作。希望这可以帮助。我为此挠了很久。

答案 3 :(得分:-1)

请尝试以下操作。

ng-keyup="handleKeyup($event);"

在你的控制器中,

$scope.handleKeyup =  function($event) {
//write your logic here.
}