在CKEditor中根据用户选择的列表动态添加上下文菜单项
Dynamically add context menu items in CKEditor based on user-selected list
使用CKEditor插件,我试图根据用户从DataTable对象中选择的项添加上下文菜单项。菜单项显示得很好。添加的第一个菜单项当前时间/日期有效。但是当单击由For循环添加的任何项时,它们都执行最后一个命令。此外,由循环添加的菜单项应该在它们自己的组中,我认为这会自动在它们和当前时间/日期命令之间放置一行。
cmd为待添加的命令名。menuList是上下文菜单项的数组。menuDetails是命令详细信息(label, command, group, order)的数组
下面是添加条目的JavaScript代码:function InitRTFContext(editor) {
if ( editor.contextMenu ) {
var cmd;
var menuList = new Object();
var menuCommand = new Object();
var menuDetails = new Object();
var i = 2;
cmd = "cmdTimeAndDate";
editor.addMenuGroup( 'CommonGroup' );
editor.addCommand(cmd, { exec : function( editor ) { editor.insertText('[[Now]]'); }});
menuDetails["label"] ='Current Time/Date';
menuDetails["command"] = cmd;
menuDetails["group"] = 'CommonGroup';
menuDetails["order"] = 1;
menuCommand[cmd] = menuDetails;
menuList[cmd] = CKEDITOR.TRISTATE_OFF;
editor.addMenuGroup('DynamicFields');
dtChosen.rows().data().each(function (row) {
if (row.QuestionTypeID != 0 && row.QuestionTypeID != 4 && row.Text != 'Text Block') {
i++;
cmd = "Q_" + row.WebFormTemplateQuestionID + "_" + row.Text;
cmd = cmd.replace(/'s/g, '');
/* This section is not working */
editor.addCommand(cmd, { exec : function( editor ) { editor.insertText('[[' + cmd + ']]'); }});
/* This section is not working */
menuDetails = new Object();
menuDetails["label"] = row.Text;
menuDetails["command"] = cmd;
menuDetails["group"] = 'DynamicFields';
menuDetails["order"] = i;
menuCommand[cmd] = menuDetails;
menuList[cmd] = CKEDITOR.TRISTATE_OFF;
}
});
editor.addMenuItems(menuCommand);
editor.contextMenu.addListener( function( element, selection ) {
return menuList;
});
}
else {
alert('Error loading RTF Context Menu.');
}
}
创建:(没有足够的rep来发布图像,所以输入)
粘贴
当前时间/日期客户名称
客户电话
客户电子邮件
…
当前时间/日期之后的所有命令,单击后将打印用于客户电子邮件的命令。那么,我错过了什么?
这里的问题是'cmd'。您在方法中使用它,但它是在父作用域中声明的。如果你在循环中使用'var'来声明它,它会正常工作。
相关文章:
- 如何在javascript而不是jquery中添加动态列表
- android phonegap jquery点击动态列表中的元素
- JSP中的动态列表框
- 使用PhoneGap和jQuery Mobile在android设备上显示动态列表视图
- JQuery Mobile UL列表仍然不能用于动态列表
- 将项目添加到动态列表
- 谷歌应用程序脚本web应用程序动态列表从表单
- 在动态列表中单击的特定img上执行JQuery
- 在jquery中滚动动态列表视图
- 无法更新复选框的动态列表
- 我无法将变量从动态列表传递到php页面进行处理.这是我不理解的逻辑问题吗
- 在 asp.net c# 中通过 POST 传递动态列表
- 将元素附加到动态列表,但浏览器不会刷新 UI
- 不使用排序数组的动态列表排序
- 基于 Javascript/jQuery 的带缩进的动态列表
- 带有动态列表的离子标签
- Jquery Mobile 中的动态列表视图和按钮
- 更改动态列表项的 CSS
- 无法使用JSON响应通过JQuery Mobile生成动态列表视图
- 使用AJAX和javascript将动态列表模型发布回控制器