首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ckeditor angularjs指令的文本区域中不工作的最大长度

在ckeditor angularjs指令的文本区域中不工作的最大长度
EN

Stack Overflow用户
提问于 2014-12-31 10:05:55
回答 2查看 16.1K关注 0票数 4

我用ckeditor插件在angularjs中创建了一个应用程序,我为ckeditor创建了一个指令,这个应用程序运行良好,但问题是我需要将最大字符长度设置为50,所以我将maxlength="50"放在这里,但是它不能工作,

有谁能告诉我这个问题的解决方案吗?

JSFiddle

html

代码语言:javascript
运行
复制
<div data-ng-app="app" data-ng-controller="myCtrl">

<h3>CKEditor 4.2:</h3>
    <div ng-repeat="editor in ckEditors">
    <textarea data-ng-model="editor.value" maxlength="50" data-ck-editor></textarea>
    <br />
    </div>
    <button ng-click="addEditor()">New Editor</button>
</div>

脚本

代码语言:javascript
运行
复制
var app = angular.module('app', []);

app.directive('ckEditor', [function () {
    return {
        require: '?ngModel',
        link: function ($scope, elm, attr, ngModel) {

            var ck = CKEDITOR.replace(elm[0]);

            ck.on('pasteState', function () {
                $scope.$apply(function () {
                    ngModel.$setViewValue(ck.getData());
                });
            });

            ngModel.$render = function (value) {
                ck.setData(ngModel.$modelValue);
            };
        }
    };
}])

function myCtrl($scope){
    $scope.ckEditors = [{value: ''}];
}
EN

回答 2

Stack Overflow用户

发布于 2014-12-31 11:14:23

您需要向您的id中添加一个textarea,如下所示:

代码语言:javascript
运行
复制
<textarea data-ng-model="editor.value" maxlength="50" id="mytext" data-ck-editor></textarea>

您需要处理CKEDITOR的关键事件

代码语言:javascript
运行
复制
window.onload = function() {
    CKEDITOR.instances.mytext.on( 'key', function() {
        var str = CKEDITOR.instances.mytext.getData();
        if (str.length > 50) {
            CKEDITOR.instances.mytext.setData(str.substring(0, 50));
        }
    } );
};

但是,请注意,该内容也包含html标记,您可能希望保留它们,

票数 6
EN

Stack Overflow用户

发布于 2015-09-04 00:47:20

我也遇到过同样的问题。我制作了这个函数,它与CKEditor一起工作,基本上是模仿maxlength函数。

代码语言:javascript
运行
复制
window.onload = function() {            
    CKEDITOR.instances.mytext.on('key',function(event){
        var deleteKey = 46;
        var backspaceKey = 8;
        var keyCode = event.data.keyCode;
        if (keyCode === deleteKey || keyCode === backspaceKey)
            return true;
        else
        {
            var textLimit = 50;
            var str = CKEDITOR.instances.mytext.getData();
            if (str.length >= textLimit)
                return false;
        }
    });    
};

此函数将检查以确保输入的字符不超过允许的字符数。

如果这样做了,它将返回false,这根本不允许更多的输入到字段中。

如果用户按backspace或delete,则返回true,这仍然允许用户在达到内容限制时更改其内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27719498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档