Javascript 在编辑器文本区域应用背景色
在ckeditor实例的文本区域应用背景色时遇到一些问题 当用户单击submit而不添加任何文本时,会显示一条消息,告诉他填写所有必填字段,并且这些必填字段区域中的所有文本字段都设置为Javascript 在编辑器文本区域应用背景色,javascript,css,ckeditor,Javascript,Css,Ckeditor,在ckeditor实例的文本区域应用背景色时遇到一些问题 当用户单击submit而不添加任何文本时,会显示一条消息,告诉他填写所有必填字段,并且这些必填字段区域中的所有文本字段都设置为背景色:#CFC183 由于ckeditor是用javascript代码创建的,所以我用它来检查文本区域中是否输入了任何文本。如果没有字符,我将应用更改。 当我在控制台中应用此代码时: CKEDITOR.instances.body.document.getBody().setStyle('background-c
背景色:#CFC183代码>
由于ckeditor是用javascript代码创建的,所以我用它来检查文本区域中是否输入了任何文本。如果没有字符,我将应用更改。
当我在控制台中应用此代码时:
CKEDITOR.instances.body.document.getBody().setStyle('background-color', '#CFC183');
它完全按照我想要的那样应用背景。
所以,我在我的javascript文件中添加了这个javascript代码来尝试管理它,但似乎不起作用。这是我的密码:
var editorInstance = CKEDITOR.replace('body', { toolbar : 'Full' });
editorInstance.on("instanceReady", function (ev) {
var editorCKE = CKEDITOR.instances.body; readyMap[editorCKE] = true;
editorCKE.setReadOnly(true);
});
var hasText = CKEDITOR.instances.body.document.getBody().getChild(0).getText();
if (!hasText) {
CKEDITOR.on('instanceCreated', function(e) {
e.editor.document.getBody().setStyle('background-color', '#CFC183');
});
}
Firebug显示此错误消息:
TypeError:CKEDITOR.instances.body.document未定义
我不太擅长Javascript,所以我的代码有什么问题吗?
我已经在这里检查过了,所以我相信我的javascript代码有问题,我需要您的帮助。我想您在这行中有一个错误:
var hasText = CKEDITOR.instances.body.document.getBody().getChild(0).getText();
这是因为您试图在文档元素准备就绪之前(在instancerady
事件之前)获取它
此处将抛出相同的错误:
if (!hasText) {
CKEDITOR.on('instanceCreated', function(e) {
e.editor.document.getBody().setStyle('background-color', '#CFC183');
});
}
同样-instanceCreated
仍然为时过早。您必须将所有代码移动到instancerady
listener。你会有这样的想法(我不确定我是否理解你想要实现的目标):
如您所见,代码中还有一个问题:
readyMap[editorCKE] = true;
在JS中没有弱映射(目前还没有,但很快就会引入)。只有字符串可以用作对象的键。在您的情况下,将在editorCKE
上调用toString()
方法,该方法返回[object]
。这就是为什么我在那里添加了name
属性。我猜您在这行中有一个错误:
var hasText = CKEDITOR.instances.body.document.getBody().getChild(0).getText();
这是因为您试图在文档元素准备就绪之前(在instancerady
事件之前)获取它
此处将抛出相同的错误:
if (!hasText) {
CKEDITOR.on('instanceCreated', function(e) {
e.editor.document.getBody().setStyle('background-color', '#CFC183');
});
}
同样-instanceCreated
仍然为时过早。您必须将所有代码移动到instancerady
listener。你会有这样的想法(我不确定我是否理解你想要实现的目标):
如您所见,代码中还有一个问题:
readyMap[editorCKE] = true;
在JS中没有弱映射(目前还没有,但很快就会引入)。只有字符串可以用作对象的键。在您的情况下,将在editorCKE
上调用toString()
方法,该方法返回[object]
。这就是为什么我在那里添加了name
属性。谢谢你的回答。这个问题你说得对!我只是对IE9有一个问题,因为在“editor.document.getBody().getFirst().getText()”为空的情况下,我有一个javascript错误。你知道我该怎么解决吗?你可以直接在body上getText()
。但这是一种非常不可靠的检查编辑器是否为空的方法。你至少应该调整这个值。谢谢你的回答。这个问题你说得对!我只是对IE9有一个问题,因为在“editor.document.getBody().getFirst().getText()”为空的情况下,我有一个javascript错误。你知道我该怎么解决吗?你可以直接在body上getText()
。但这是一种非常不可靠的检查编辑器是否为空的方法。您至少应该修剪该值。