我试图禁用CKEditor对话框之外的JSP页面上存在的按钮。具体来说,当单击CKEditor工具栏上的“源”按钮时,我想运行一些仅禁用我网页上的“发布”按钮的代码-如果可以使用HTML源代码进行编辑,则不允许发布。我已经尝试过在此SO发布中建议的事件委托。除了使用CKEditor的“源”按钮,该类将在完成工作时从“ cke_button_off”更改为“ cke_button_disabled”,再更改为“ cke_button_on”。Manwal在引用的SO发布中显示的代码查询hassclass中的特定类,以确定按钮是否已启用。不错的干净解决方案,但是,正如我所说的那样,一旦单击按钮,就会有一个中间的“ cke_button_disabled”类参与,因此检查总是在我的代码中失败,因为我没有检查“ cke_button_disabled”类。我只关心设置的两个CSS类:cke_button_on和cke_button_off。
这就是我的难题。我曾考虑过在查询设置的CSS类之前先等待click事件完成,但是我找不到解决方法,因此一旦CKEditor Source按钮单击完成,我就可以查询Source按钮的CSS类。我已经尝试了CKEditor的afterCommandExec,但是没有用。这是该代码:
CKEDITOR.on('instanceReady', function (e) {
var editor = e.editor;
editor.on('afterCommandExec', handleAfterCommandExec);
function handleAfterCommandExec(event) {
var commandName = event.data.name;
// For 'source' commmand:
if (commandName == 'source') {
var xxx = $(document.getElementById('cke_15'));
if(xxx.hasClass('cke_button_off')) { //cke_button_off when
// notdepressed
console.log("In handleAfterCommandExec::
CKEDITOR SOURCE BUTTON CLICKED!!!!");
$('#button-publishButton').attr("disabled", "true");
}else {
console.log("In handleAfterCommandExec::
CKEDITOR SOURCE BUTTON UNNNNACLICKED!!!!");
$("#button-publishButton").removeAttr("disabled");
}
}
}
我也尝试了回调:
$(document).on('click', '.cke_button__source', function(){
test();
});
function test() {
var xxx = $(document.getElementById('cke_15'));
if(xxx.hasClass('cke_button_off')) { //cke_button_off when not depressed
//cke_button_disabled
.....same code as previous
}
明白了吗?每次我的代码运行hassclass查询的结果时,总是“ cke_disabled”。有人可以建议一种查询CKEditor“源”按钮css值的状态的方法,以便为我提供所需的信息-button_on或button_off吗?也许还有另一种方法可以等到“源”按钮代码完成后再检查css值,或者,当单击CKEditor工具栏按钮时,还有另一种在JSP页面上禁用按钮的方法?感谢您的时间和协助。
您不应该这样用JQuery入侵CKEditor。到底是什么问题?是捕获事件还是弄清楚事件是打开还是关闭?如果您在检测源模式是打开还是关闭时遇到麻烦,则应该可以通过editor mode属性来获取它:
http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-mode
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句