2010-11-28 49 views
2

jQuery UIダイアログボックスで選択した値を返す必要があります。jQuery UIダイアログで値を返すにはどうすればよいですか?

現在、私はちょうどこのように値を設定しています:

jQuery('#fileBrowser input.addImage').live("click", function() { 
    // 'file' is set when selected in file browser 
    imageUrlInputBox.val(file);  // Add relative image url to text field 
    jQuery("#fileBrowser").dialog("close"); 
}); 

私が今直面している問題は、しかし、私はTinyMCEの中にカスタムボタンthrougダイアログボックスを開くことです。だから私はイメージを挿入する別の方法が必要でした。これは私が思いついたものです:

// This is the function valled when clicking the tinyMCE button 
function openImageManager(ed) {   
    //tinymce is a global variable.  
    tinymce = ed; 
    jQuery("#fileBrowser").dialog("open"); 
} 

この関数は、tinyMCEプラグインから渡された 'ed'変数を受け取ります。ここではそのためのスクリプトは次のとおりです。

(function() { 

    tinymce.create('tinymce.plugins.wp_filebrowser_plugin', { 

     init : function(ed, url){ 
      ed.addButton('wp_filebrowser_plugin', { 
       title : 'Insert image', 
       onclick : function() { 
        openImageManager(ed) 
       }, 
       image: url + "/img/wand.png" 
      }); 
     }, 

     getInfo : function() { 
      return { 
       longname : 'WP Filebrowser TinyMCE plugin', 
      }; 
     } 
    }); 

    tinymce.PluginManager.add('wp_filebrowser_plugin', tinymce.plugins.wp_filebrowser_plugin); 
})(); 

挿入]ボタンをクリックしたときに今、私は、テキストエディタにデータを挿入するために、次のコードを実行することができます。

jQuery('#fileBrowser input.addImage').live("click", function() { 
    var img_html = '<img class="' + css_class + '" src="' + file_url + '" title="' + alt + '" alt="" />'; 
    tinymce.execCommand('mceInsertContent', false, img_html); 
}); 

はSOLUTION
感謝のへTJ Crowder、私は答えを見つけました。これを反映するようにコードが更新されます。

答えて

2

あなたはこれを行うことはできません。

function openImageManager() { 
    img_html = jQuery("#fileBrowser").dialog("open"); // I need some sort of callback here 
    return img_html; 
} 
...ユーザーとあなたの対話の相互作用が openImageManagerコールへ 非同期する必要があるためには、 openImageManagerを入れる方法はありません(ユーザーが何かをしているような)UIイベントが発生するのを待つ間、「保留」機能を使用します。

あなたがする必要があることは、ダイアログを表示して、それを閉じてTinyMCEに画像を貼り付けることです(例えば、execCommandmceImageコマンドを送信するなど)。 openImageManager関数の戻り値として持つことはできません。

+0

ご意見ありがとうございます。それは私が解決策を見つけるのを助けた。私の更新されたコードを見てください。 – Steven

+0

@スティーブン:優秀、喜んで助けました。 –

関連する問題