我在我的网络应用程序中使用CKEditor,需要从javascript中禁用/启用编辑器。我知道有一个名为readOnly的选项,但我不知道如何从jQuery中设置它。
有人知道如何使用jQuery禁用和启用CKEditor吗?
答案 0 :(得分:22)
最简单的方法:
要停用 CKEditor:
CKEDITOR.instances['TEXTAREA_NAME'].setReadOnly(true);
启用 CKEditor:
CKEDITOR.instances['TEXTAREA_NAME'].setReadOnly(false);
答案 1 :(得分:10)
我在codeigniter中使用它。在视图文件中,我正在使用它:
<script type="text/javascript">
$(document).ready(function() {
CKEDITOR.config.readOnly = true;
});
</script>
答案 2 :(得分:4)
我假设您使用的是CKE jQuery adapter,因此您可以使用.ckeditorGet()
jQuery函数快速访问CKEditor的API。
要以只读模式切换正在运行的编辑器实例,请使用setReadOnly
编辑器功能:
$( _your_textarea_ ).ckeditorGet().setReadOnly();
将其切换回可写用途:
.setReadOnly( false );
当您启动编辑器以立即以只读模式启动时,您还可以使用readOnly
配置值:
$( _your_textarea_ ).ckeditor({
readOnly: true
});
答案 3 :(得分:2)
假设您已经包含jQuery适配器,则代码应该使其成为只读。如果尚未包含,可以从示例中获取jQuery适配器。
<div class="wrapper">
<form id="myfrm" name="myfrm" class="myfrm" action="" method="post">
<textarea id="myeditor" name="myeditor"></textarea>
<input type="submit" id="submit" name="submit" value="Submit" />
</form>
</div>
和js
$(document).ready(function(e) {
var myeditor = $('#myeditor');
myeditor.ckeditor();
myeditor.ckeditorGet().config.resize_enabled = false;
myeditor.ckeditorGet().config.height = 200;
myeditor.ckeditorGet().config.readOnly = true;
});
要根据您选择的选择框启用或禁用ckeditor,您必须执行此类更改事件
$(document).ready(function(){
//put ckeditor initialization (the above) here.
$('#myselect').change(function(){
var x = $(this);
if(x.val()=='enable'){
myeditor.removeAttr('disabled');
}else if(x.val()=='disable'){
myeditor.attr('disabled','disabled');
}
myeditor.ckeditorGet().destroy();
myeditor.ckeditor();
});
});
我们上面所做的是将原始元素设置为具有属性disabled="disabled"
并在销毁当前实例后重新加载ckeditor。检查JSFiddle示例2。
答案 4 :(得分:1)
我认为您没有正确阅读该文档...它说Ckeditor有一些实例名称,并且在页面集的标签中使用该实例名称InstanceNameOfCkEditor.config.readOnly = true;
http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#setReadOnly
答案 5 :(得分:1)
// Temporary workaround for providing editor 'read-only' toggling functionality.
( function()
{
var cancelEvent = function( evt )
{
evt.cancel();
};
CKEDITOR.editor.prototype.readOnly = function( isReadOnly )
{
// Turn off contentEditable.
this.document.$.body.disabled = isReadOnly;
CKEDITOR.env.ie ? this.document.$.body.contentEditable = !isReadOnly
: this.document.$.designMode = isReadOnly ? "off" : "on";
// Prevent key handling.
this[ isReadOnly ? 'on' : 'removeListener' ]( 'key', cancelEvent, null, null, 0 );
this[ isReadOnly ? 'on' : 'removeListener' ]( 'selectionChange', cancelEvent, null, null, 0 );
// Disable all commands in wysiwyg mode.
var command,
commands = this._.commands,
mode = this.mode;
for ( var name in commands )
{
command = commands[ name ];
isReadOnly ? command.disable() : command[ command.modes[ mode ] ? 'enable' : 'disable' ]();
this[ isReadOnly ? 'on' : 'removeListener' ]( 'state', cancelEvent, null, null, 0 );
}
}
} )();
用法:
// Turn CKEditor into 'ready-only' mode or vice versa.
CKEDITOR.instances.editor1.readOnly( true );
CKEDITOR.instances.editor1.readOnly( false );
答案 6 :(得分:0)
在我们的项目中,我们隐藏了CKEditor并使用ReadOnlyText区域来显示现有文本。希望这会有所帮助。
答案 7 :(得分:0)
你试试这是最好的解决方案
var existingEditor = CKEDITOR.instances && CKEDITOR.instances[element.id];
try {
if (existingEditor && typeof(existingEditor) !== "undefined" && typeof(existingEditor.setReadOnly) !== "undefined") {
if (el.prop("disabled")) {
existingEditor.setReadOnly(true);
} else {
existingEditor.setReadOnly(false);
}
}
} catch (ex) {
//do nothing
}
答案 8 :(得分:0)
如果您在一个页面上有多个 ckeditor。以下解决方案对我有用。
CKEDITOR.instances.instance_name.on('instanceReady', function(ev) {
var editor = CKEDITOR.instances.instance_name;
//for disable
editor.setReadOnly();
//for enable
editor.setReadOnly(false);
});