Wie legen Sie den Fokus eines TinyMCE-Textarea-Elements fest?

Lesezeit: 3 Minuten

Ich verwende TinyMCE für einen Textbereich auf einer Seite, aber es passt nicht gut in die Tab-Reihenfolge der anderen Elemente.

Ich kann den folgenden Code verwenden, um zu erfassen, wann ich das erste Element verlasse:

$('#title').live('keypress', function (e) {
   if(e.keyCode == 9) {
       alert('tabbed out');
   }
});

Wie kann ich den Fokus auf einen TinyMCE-Editor setzen?

Endlich eine Antwort gefunden … verwenden Sie den Befehl:

tinymce.execCommand('mceFocus',false,'id_of_textarea');

Für meine Zwecke war ‘id_of_texterea’ “Beschreibung”, dh

<textarea id="description" ... ></textarea>

In dem Formularelement, das meinem Textbereich vorausging, habe ich den execCommand oben zur Aktion “onblur” des Elements hinzugefügt.

  • Für einen realistischeren Ansatz könnten Sie diesen execCommand an einen Tab-Tastendruck auf dem vorhergehenden Formularelement binden.

    – jbnunn

    22. April 2010 um 15:18 Uhr

Ich weiß, dass dies ein alter Beitrag ist, aber nur um meinen Beitrag hinzuzufügen, dass der Editor geöffnet ist und der Fokus nicht funktioniert. Was ich gefunden habe, das für mich funktioniert hat, war Folgendes:

tinyMCE.activeEditor.focus();

Ich musste dies in einem window.setTimeout-Ereignis festlegen, weil ich JS-Objekte und dergleichen verwendet habe. Hoffe das hilft.

  • Das hat bei mir gut funktioniert: setTimeout(“try{tinymce.activeEditor.focus()}catch(e){}”, 2000);

    – Matthäus Lock

    18. Oktober 2013 um 1:47 Uhr

  • Nachdem Sie alle vorherigen Antworten durchgegangen sind, ist dies diejenige, für die sich alles gelohnt hat. Vielen Dank.

    – Karsten

    16. August um 12:26 Uhr

Benutzer-Avatar
zzz

Das Fokussieren funktioniert auch so:

tinyMCE.get('id_of_textarea').focus()

Schauen Sie sich das tabfocus-Plugin an, das macht genau das, was Sie wollen:

http://tinymce.moxiecode.com/tryit/tab_focus.php

Benutzer-Avatar
beraubt

Wenn Sie tinymce mit JQuery verwenden. Folgendes wird funktionieren

$("#id_of_textarea").tinymce().focus();

Sie können dies jedoch erst tun, nachdem der Editor initialisiert wurde, und daher müssen Sie möglicherweise auf eines seiner Initialisierungsereignisse warten.

Benutzer-Avatar
Pranab Gupta

tinyMCE.get('Description').getBody().focus();

Das obige funktioniert auch in Firefox, Chrome und IE. In anderen Browsern habe ich nicht getestet.

  • Ich bin mir nicht sicher warum, aber die akzeptierte Antwort hat bei mir nicht funktioniert, während diese hier funktionierte.

    – Markus

    5. September 2014 um 17:14 Uhr

  • Antwort funktioniert nur für mich, wenn mehr als eine Instanz von TinyMce auf der Seite vorhanden ist.

    – Elektrotyp

    30. Mai 2020 um 20:09 Uhr

  • Für mich hat das funktioniert, obwohl ich auch hinzufügen musste tinyMCE.get('Description').getBody().scrollIntoView() um sicherzustellen, dass es auch auf dem Bildschirm war.

    – Michael Dunlap

    23. Oktober 2020 um 22:40 Uhr

Benutzer-Avatar
VGrünhagen

Sieht so aus, als ob für TinyMCE 4 einige dieser Lösungen nicht mehr funktionieren.

// Scheint nicht auf TinyMCE 4 zu funktionieren

tinymce.execCommand('mceFocus',false,'id_of_textarea'); 

// Hat nicht funktioniert

$("id_of_textarea").tinymce().focus();

tinyMCE.activeEditor.focus();

Was für mich funktioniert

// Funktioniert hervorragend in Chrome, aber überhaupt nicht in Firefox

tinyMCE.init({
    //...
    auto_focus : "id_of_textarea"
});

// Fügen Sie dies hinzu, damit Firefox auch funktioniert

init_instance_callback : "customInitInstanceForTinyMce", // property to add into tinyMCE.init()

function customInitInstanceForTinyMce() {
    setTimeout(function () {                         // you may not need the timeout
        tinyMCE.get('Description').focus();
    }, 500);
}

  • Ich bin mir nicht sicher warum, aber die akzeptierte Antwort hat bei mir nicht funktioniert, während diese hier funktionierte.

    – Markus

    5. September 2014 um 17:14 Uhr

  • Antwort funktioniert nur für mich, wenn mehr als eine Instanz von TinyMce auf der Seite vorhanden ist.

    – Elektrotyp

    30. Mai 2020 um 20:09 Uhr

  • Für mich hat das funktioniert, obwohl ich auch hinzufügen musste tinyMCE.get('Description').getBody().scrollIntoView() um sicherzustellen, dass es auch auf dem Bildschirm war.

    – Michael Dunlap

    23. Oktober 2020 um 22:40 Uhr

Benutzer-Avatar
Andreas Louv

Was tatsächlich funktioniert, ist das Setzen einer Option in der configfile (oder jquery-Datei) Mit dieser Option können Sie eine Editorinstanz automatisch fokussieren. Der Wert dieser Option sollte eine Editorinstanz-ID sein. Die Editorinstanz-ID ist die id für den ursprünglichen Textbereich bzw <div> Element, das ersetzt wurde.

Beispiel für die Verwendung der auto_focus Möglichkeit:

tinyMCE.init({
    //...
    auto_focus : "elm1"
});

  • Hat hier gut funktioniert. Ich habe meinem Code eine Bedingung hinzugefügt, die das Vorhandensein des Attributs “autofocus” im Textfeld überprüft. Wenn wahr, wird auto_focus auf textarea id gesetzt, andernfalls wird auto_focus auf false gesetzt.

    – Leonardo Montenegro

    13. Mai 2014 um 13:43 Uhr


1230700cookie-checkWie legen Sie den Fokus eines TinyMCE-Textarea-Elements fest?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy