这是javascript代码。我正在使用bodyType: 'tabpanel'
,因为我想要2个标签。麻烦是当onsubmit: function( e ) { console.log(e.data); }
触发时我只得到对象{nameA:“aaa”,ageA:“a1”}的输出。那么如何从Tab 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 );
})();
答案 0 :(得分: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);
}
中找到了引用
答案 1 :(得分:0)
我找到了其他解决方案,看起来更好(对我来说)。而不是
...
bodyType: 'tabpanel',
body: [...]
...
你可以在体内做tabpanel。 它应该如下所示:(我简化了您的示例,并在提交和插入一些内容时提供警报完整数据)
(...)
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一起工作 - 但是警报显示对象。 )
答案 2 :(得分:0)
您可以使用以下代码从所有标签中轻松获取所有字段
onsubmit: function (b) {
var win = b.control.rootControl;
alert( JSON.stringify( win.toJSON() ) );
}