2

好的,我一直试图让这个脚本工作,但我就是不知道出了什么问题。我试图让 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 并在提示中输入 bar 并单击确定,一切正常(我得到“[tooltip tip="bar"]foo[/tooltip]"),然后我再次使用它,这次我输入文本中的废话和提示中的蓝色,但我仍然得到相同的输出(“[tooltip tip="bar"]foo[/tooltip]")。似乎它没有重新读取输入...请帮助


PS:我正在使用 ajax 来获取表单(因为这是一个 js 文件),我可以在此处附加它,但它似乎对我来说并不重要......

4

1 回答 1

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
            }
    }
//...
于 2013-04-16T00:16:01.077 回答