对于ckeditor angularjs指令,maxlength在textarea中不起作用

时间:2014-12-31 10:05:56

标签: javascript angularjs angularjs-directive ckeditor maxlength

我已经使用ckeditor插件在angularjs中创建了一个应用程序,我已经为ckeditor创建了一个指令,应用程序工作正常,但问题是我需要将最大字符长度设置为50,所以我放{{1但是它不起作用,

任何人都可以告诉我一些解决方案吗

JSFiddle

HTML

maxlength="50"

脚本

<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>

2 个答案:

答案 0 :(得分:5)

您需要向id添加textarea,如下所示:

<textarea data-ng-model="editor.value" maxlength="50" id="mytext" data-ck-editor></textarea>

您需要处理CKEDITOR的关键事件:

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标记,您可能希望保留它们,

答案 1 :(得分:3)

我遇到了同样的问题。我使用CKEditor这个功能基本上模仿了maxlength函数。

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,这只是不允许任何更多的输入进入该字段。

如果用户按退格键或删除则会返回true,如果达到内容限制,用户仍然可以更改其内容。