我用ckeditor插件在angularjs中创建了一个应用程序,我为ckeditor创建了一个指令,这个应用程序运行良好,但问题是我需要将最大字符长度设置为50,所以我将maxlength="50"
放在这里,但是它不能工作,
有谁能告诉我这个问题的解决方案吗?
html
<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>
脚本
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: ''}];
}
发布于 2014-12-31 11:14:23
您需要向您的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标记,您可能希望保留它们,
发布于 2015-09-04 00:47:20
我也遇到过同样的问题。我制作了这个函数,它与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,这根本不允许更多的输入到字段中。
如果用户按backspace或delete,则返回true,这仍然允许用户在达到内容限制时更改其内容。
https://stackoverflow.com/questions/27719498
复制相似问题