2017-07-05 35 views
0

我正在爲Wordpress創建一個TinyMCE插件。它有一個textbox和一個listbox字段,它們都停留在模態窗口中。 代碼如下:TinyMCE:從模式窗口中的列表框中獲取值

(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 
         } 
        }) 
       } 
      }); 
    } 
) 

我的問題是關於如何獲取字段值。我做的和textboxonsubmit()方法中的n1 var)效果很好,但listbox獲得了顯示給TinyMCE用戶的相同文本(每個列表框項目中的文本變量)。

我想要的是一種獲得價值的方式;再加上,我想我沒有得到正確的方式來做到這一點,甚至沒有文本框。任何人都可以幫助我?謝謝。

回答

1

更好的方式來產生內容是:

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

我解決我自己:我不得不放棄一個名字我所有的領域:

{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'}, 
    ] 

在這一點上,產生我的內容我得到的值是這樣的:

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

並用它寫入TinyMCE textarea。爲了得到值回來,我不得不修改文本字段是這樣的:

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

同樣