1

これがJavaScriptコードです。bodyType: 'tabpanel'2タブにしたいので使っています。問題は、onsubmit: function( e ) { console.log(e.data); }発火時に Object { nameA: "aaa", ageA: "a1" } の出力しか得られないことです。では、タブ B からデータを取得するにはどうすればよいでしょうか。

(function() {
     /* Register the buttons */
     tinymce.create('tinymce.plugins.MyButtons', {
          init : function(editor, url) {

               editor.addButton('themedropdownbutton', {
                 title : 'My dropdown button',
                 type: 'menubutton',
                 text: 'Theme Shortcodes',
                 menu: [
                       {
                           text: 'Tabs Example',
                           onclick: function() {
                                var win = editor.windowManager.open( {
                                    title: 'Content Tabs',
                                    bodyType: 'tabpanel',
                                    body: [
                                        {
                                            title: 'My Tab A',
                                            type: "form",
                                            items: [
                                                { name: 'nameA', type: 'textbox', label: 'Your Name TAB A' },
                                                { name: 'ageA', type: 'textbox', label: 'Your Age TAB A' },
                                            ]
                                        },
                                        {
                                            title: 'My Tab B',
                                            type: "form",
                                            items: [
                                                { name: 'nameB', type: 'textbox', label: 'Your Name TAB B' },
                                                { name: 'ageB', type: 'textbox', label: 'Your Age TAB B' },
                                            ]
                                        },
                                    ],
                                    onsubmit: function( e ) {
                                        console.log(e.data);   // output only this - Object { nameA: "aaa", ageA: "a1" }
                                                               // where is { nameB: "bbb", ageB: "b1" }  ?????
                                    }
                                });
                            }
                        },
                        {
                            // other functions
                        },
                     ]  // end menu:
               });
          },
          createControl : function(n, cm) {
               return null;
          },
     });

     tinymce.PluginManager.add( 'my_button_script', tinymce.plugins.MyButtons );

})();
4

3 に答える 3

1

わかりました、最終的に答えを見つけました。同じ問題がある場合はこれを使用してください

onsubmit: function( e ) {
    var alldata = win.toJSON();
    console.log(JSON.stringify(alldata));  // just for testing, you don't need this line
    // You can then access the results with this example
    editor.insertContent('Tab A name is ' + alldata.nameA + '; Tab B name is ' +  alldata.nameB);
    editor.insertContent('Tab A age is ' + alldata.ageA + '; Tab B age is ' +  alldata.ageB);
}

http://community.tinymce.com/forum/viewtopic.php?id=33852で参照を見つけました

于 2016-04-22T13:19:15.280 に答える
0

私は(私にとって)より良く見える他の解決策を見つけます。それ以外の

...
bodyType: 'tabpanel',
body: [...]
...

ボディ内でタブパネルを実行できます。次のようになります: (私はあなたの例を単純化し、送信時にアラートの完全なデータを作成し、いくつかのコンテンツを挿入します)

(...)
editor.windowManager.open({

            title: 'Content Tabs',
              //bodyType: 'tabpanel', <- delete this
              body: [
                {type: 'container', label:'My all tabs'}, //it's not necessary, but shows, that other things can be there
                {
                  title: 'Tabpanels',
                  type: 'tabpanel',                    
                  items: [ 
                      {
                        title: 'My Tab A',
                        type: "form",
                        items: [
                            {name: 'nameA', type: 'textbox',
                            label: 'Your Name TAB A' },
                            { name: 'ageA', type: 'textbox',
                            label: 'Your Age TAB A' }
                        ]
                      },
                      {
                        title: 'My Tab B',
                        type: "form",
                        items: [
                            { name: 'nameB', type: 'textbox',
                            label: 'Your Name TAB B' },
                            { name: 'ageB', type: 'textbox',
                            label: 'Your Age TAB B' }
                        ]
                      }
                  ]
                }
              ],
              onsubmit: function(e) {
               editor.selection.setContent('[Tested menu');
               editor.insertContent(' TabA name: ' + e.data.nameA);
               editor.insertContent(", TabB name: " + e.data.nameB +']');
               alert(e.data.toSource());
              }

        }
...

私はこれのために TinyMceFiddle を作成します: http://fiddle.tinymce.com/0Wfaab/1。(申し訳ありませんが、回答の下にコメントを追加していませんが、まだこれを行うことはできません。また、console.log が TinyMce でうまく機能しないことがわかりましたが、アラートにはオブジェクトが表示されます。)

于 2017-07-27T18:46:03.437 に答える