AngularJS中contenteditable在按Enter键时失焦

3

我有一个指令,我在一个div上添加它,以便能够编辑它的内容并将其与作用域进行双向绑定。当我按下回车键时,我希望模糊化,我尝试了如下所示的element[0].blur();,但这并不起作用。我该怎么做?

.directive("contenteditable", function() {
    return {
        restrict: "A",
        require: "ngModel",
        link: function(scope, element, attrs, ngModel) {

            function read() {
                ngModel.$setViewValue(element.html());
            }
            ngModel.$render = function() {
                element.html(ngModel.$viewValue || "");
            };
            element.bind("blur keyup change", function() {
                scope.$apply(read);
            });


            element.css('outline','none');
            element.bind("keydown keypress", function (event) {
                if(event.which === 13) {
                    element[0].blur();
                    event.preventDefault();
                }
            });

        }
    };
});
2个回答

3

1
哦,是的,它可以使用输入,但我正在使用一个可编辑的div。<div contenteditable ng-model="myModel"/>,我没有忘记ng-model。http://plnkr.co/edit/DOmheYADNC7Z3cO7H5Et?p=preview - user1506145
即使使用div,也可以不需要任何技巧,它仍然可以正常工作,请参见:http://plnkr.co/edit/UiosU1WvyUvhgLBlzX6r?p=preview - Tai Huynh

0

我找到了解决方案,诀窍在于在调用element[0].blur();之前调用$window.getSelection().removeAllRanges();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接