2017-07-05 5 views
0

Ich erstelle ein TinyMCE Plugin für Wordpress. Es hat ein textbox und ein listbox Feld, beide bleiben in einem modalen Fenster. -Code unten:TinyMCE: Werte von einer Listbox in einem modalen Fenster erhalten

(function() { 
    tinymce.create('tinymce.plugins.windowdata', { 
     init : function(ed, url) { 
      ed.addButton('showModal', { 
       title: 'Show Modal', 
       image: url + '/img/button.png', 
       onclick: function() { 
        ed.windowManager.open({ 
         title: 'Minestra', 
         body: [ 
          {type: 'textbox', name: 'Field', label: 'Number', value: '', tooltip: 'Tooltip', maxLength: 3, classes: 'i1n'}, //textbox 
          {type: 'listbox', label: 'Listbox', classes: 'i1lb', values: [ 
           {text: '', value: ''}, 
           {text: 'Number', value: 'lone_number'}, 
           {text: 'Bar', value: 'bar'}, 
          ]}, //listbox 
         ], 
         onsubmit: function() { 
          var n1 = document.getElementsByClassName('mce-i1n')[0].value; //textbox value 
          var t1 = document.getElementsByClassName('mce-i1lb')[0].getElementsByTagName('button')[0].getElementsByClassName('mce-txt')[0].innerHTML; //listbox value 

          ed.execCommand('mceInsertContent', 0, n1+' is of type '+t1) //write contents 
         } 
        }) 
       } 
      }); 
    } 
) 

Meine Frage ist, wie die Feldwerte zu erhalten. Was ich tat funktioniert sehr gut mit der textbox (n1 var innerhalb der onsubmit() Methode), aber die listbox erhält den gleichen Text, der TinyMCE Benutzer angezeigt wird (die Text-var in jedem Listbox-Element).

Was ich will, ist eine Möglichkeit, den Wert stattdessen zu erhalten; plus, ich nehme an, ich habe nicht den richtigen Weg, es zu tun, nicht einmal mit Textbox. Kann mir jemand helfen? Vielen Dank.

Antwort

1

bessere Weg, um Inhalte zu generieren ist:

onsubmit: function (e) { 
    // Insert content when the window form is submitted 
       e.insertContent('Textbox content: ' + e.data.Field); 
       e.insertContent('Listbox content: ' + e.data.Listbox) 
} 
0

ich von meinem eigenen gelöst: i einen Namen alle meine Felder zu geben hatte:

{type: 'textbox', name: 'Field', label: 'Number', value: '', tooltip: 'Tooltip', maxLength: 3, classes: 'i1n'}, //textbox 
    {type: 'listbox', name: 'Listbox', label: 'Listbox', classes: 'i1lb', values: [ 
     {text: '', value: ''}, 
     {text: 'Number', value: 'lone_number'}, 
     {text: 'Bar', value: 'bar'}, 
    ] 

An dieser Stelle meine Inhalte zu generieren bekam ich Werte auf diese Weise:

onsubmit: function (e) { 
    e.data.Field; 
    e.data.Listbox; 
} 

und benutzte dies um in TinyMCE Textarea zu schreiben. Um Werte zurück i hatte Textbox Feld auf diese Weise zu ändern:

{type: 'textbox', name: 'Field', label: 'Number', value: '', tooltip: 'Tooltip', maxLength: 3, classes: 'i1n', value: ed.selection.getContent()} 

Ähnlich ist es mit listbox

Verwandte Themen