2016-09-28 5 views
0

Ich habe ein HTML-Formular auf der Vorderseite meiner (WordPress) -Website, die ein TinyMCE-Feld anzeigen kann.Hinzufügen von tinyMCE Inhalt zu serialisierten Array (WordPress)

Das Formular selbst kann vom WP-Admin vollständig angepasst werden und daher kann die ID/der Name des tinyMCE-Felds alles sein.

Wenn das Formular abgeschickt wird, führe ich einige jQuery aus, um die Felder zu validieren (d. H. Alle, die als erforderlich konfiguriert sind, müssen Inhalt haben). Wenn die Validierung fehlschlägt, wird eine Warnung angezeigt, andernfalls wird das Formular gesendet.

Allerdings habe ich ein Problem mit diesem zu arbeiten, wenn ein tinyMCE Feld verwendet wird, in dem ich den Inhalt des Feldes in meiner JS-Datei erhalten und dann innerhalb meiner PHP-Validierungsfunktion validieren muss.

Für das Formular selbst, ich bin einfach Serialisierung der Daten. Was ich jetzt tun muss, ist die Eingabe-ID des tinyMCE-Feldes und dessen Inhalt zu diesem Array hinzuzufügen.

var $form  = $("#myform"); 
var formData = $("#myform").serialize(); 

var mceContent; 

var tinymceActive = (typeof tinyMCE != 'undefined') && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden(); 

if (tinymceActive) { 
    mceContent = tinyMCE.activeEditor.getContent(); 
} 

So habe ich formData als meine serialisierten Array und mceContent enthält die Redakteure Inhalte, aber wie bekomme ich den Editor Feldnamen und deren Inhalt in formData? Ich weiß, dass ich den Herausgebernamen mit tinymce.editors[0].id abrufen kann, aber ich kann nicht für das Leben von mir {tinymce.editors[0].id : mceContent} in das formData Feld hinzufügen.

Antwort

0

Die Funktion jQuery Serialisierung funktioniert auf die Formularfelder in dem Formular ..., wenn es um den Editor „versteckt“, um die zugrunde liegenden <textarea> TinyMCE kommt und wenn Sie serialize() anrufen und das Formular über JavaScript legt die <textarea> ist leer.

Vor Serialisierung/Absenden das Formulars, rufen Sie so etwas wie tinyMCE.activeEditor.triggerSave() oder tinyMCE.get('yourEditorId').triggerSave() - das TinyMCE zwingen wird, den Wert der zugrunde liegenden <textarea> zu aktualisieren, so dass jQuery serialize Funktion ordnungsgemäß den Wert der <textarea> als natürliche Teil des Formulars serialisiert .

+0

'tinyMCE.activeEditor.triggerSave()' hat einen unbekannten Funktionsfehler zurückgegeben, aber 'tinyMCE.triggerSave()' hat die Aufgabe erledigt. Vielen Dank! – Mike