好的,我一直试图让这个剧本发挥作用,但我无法弄清楚错误是什么。 我试图让tinyMCE使用jquery对话从2个字段中获取输入并以特定格式输出。这是我的tinyMCE插件代码:
(function() {
tinymce.create('tinymce.plugins.RMFtooltip', {
init : function(ed, url) {
ed.addButton('RMFtooltip', {
title : 'ToolTip',
image : url+'/RMFtooltipbutton.png',
onclick : function() {
i = jQuery('<div title="Create your tooltip" ></div>');
/*jQuery.get(url+'/ajax/form.html', function(data) {
i.html(data);
});*/
i.load(url+'/ajax/form.html');
i.dialog({
autoOpen: true,
draggable: false,
resizable: false,
modal: true,
buttons: {
"OK": function() {
RMFtooltip_text = jQuery("#RMFtooltip_text").val();
RMFtooltip_tip = jQuery("#RMFtooltip_tip").val();
if (RMFtooltip_text != null && RMFtooltip_text != '' && RMFtooltip_tip != null && RMFtooltip_tip != ''){
ed.execCommand('mceInsertContent', false, '[tooltip tip="'+RMFtooltip_tip+'"]'+RMFtooltip_text+'[/tooltip]');
}
jQuery( this ).dialog( "close" );
},
Cancel: function() {
jQuery( this ).dialog( "destroy" );
}
}
});
...
现在,我第一次点击tinyMCE中的按钮一切正常,但是如果我再次点击它,无论输入是什么,我都会得到相同的输出。例如:我在文本中输入foo并在提示栏中单击确定,一切正常(我得到&#34; [工具提示提示=&#34; bar&#34;] foo [/ tooltip]&#34;) ,然后我再次使用它,这次我在文本中输入blah,在tip中输入蓝色,但我仍然得到相同的输出(&#34; [tooltip tip =&#34; bar&#34;] foo [/ tooltip ]&#34)。似乎它没有读取输入... 请帮忙
PS:我使用ajax来获取表单(因为这是一个js文件),我可以在这里附上它,但它似乎对我来说不重要....
答案 0 :(得分:2)
每次关闭对话框时都需要清空对话框,因为每次调用click函数时jQuery都会在幕后继续创建新的html。你永远不会再看到这个html了,但它就在那里,并且使用表单元素的ID来搞乱你的调用。
要解决此问题,请在每次调用后清空对话框
//...
buttons: {
"OK": function() {
RMFtooltip_text = jQuery("#RMFtooltip_text").val();
RMFtooltip_tip = jQuery("#RMFtooltip_tip").val();
if (RMFtooltip_text != null && RMFtooltip_text != '' && RMFtooltip_tip != null && RMFtooltip_tip != ''){
ed.execCommand('mceInsertContent', false, '[tooltip tip="'+RMFtooltip_tip+'"]'+RMFtooltip_text+'[/tooltip]');
}
jQuery( this ).dialog( "close" );
jQuery(this).empty(); //Add this
},
Cancel: function() {
jQuery( this ).dialog( "destroy" );
jQuery(this).empty(); //Add this
}
}
//...