J'utilise TinyMCE pour une zone de texte sur une page mais elle ne joue pas dans l'ordre de tabulation des autres éléments.
Je peux utiliser le code suivant pour capturer lorsque je quitte le premier élément:
$('#title').live('keypress', function (e) {
if(e.keyCode == 9) {
alert('tabbed out');
}
});
Comment puis-je définir le focus sur un éditeur TinyMCE?
Enfin trouvé une réponse ... utilisez la commande:
tinymce.execCommand('mceFocus',false,'id_of_textarea');
Pour mes besoins, "id_of_texterea" était "description", c'est-à-dire
<textarea id="description" ... ></textarea>
Dans l'élément de formulaire qui a précédé mon textarea, j'ai ajouté le execCommand ci-dessus à l'action "onblur" de l'élément.
Je sais que ceci est un ancien post, mais je voudrais juste ajouter mon opinion sur le fait que l'éditeur soit ouvert et que le focus ne fonctionne pas. Voici ce que j'ai trouvé qui a fonctionné pour moi:
tinyMCE.activeEditor.focus();
Je devais définir cela dans un événement window.setTimeout en raison de la façon dont j'utilisais les objets JS, etc. J'espère que cela t'aides.
La mise au point fonctionne également comme ceci:
tinyMCE.get('id_of_textarea').focus()
Découvrez le plugin tabfocus, qui fait exactement ce que vous voulez:
Si vous utilisez tinymce avec JQuery. Ce qui suit fonctionnera
$("#id_of_textarea").tinymce().focus();
Vous ne pouvez le faire qu'après l'initialisation de l'éditeur et vous devrez peut-être attendre l'un de ses événements d'initialisation.
Ce qui fonctionne réellement, c’est de définir une option dans la configfile
(ou le fichier jquery). Cette option vous permet de mettre au point automatiquement une instance de l’éditeur. La valeur de cette option doit être un identifiant d'instance d'éditeur. L'ID d'instance de l'éditeur est la variable id
de l'élément textarea ou <div>
d'origine remplacé.
Exemple d'utilisation de l'option auto_focus
:
tinyMCE.init({
//...
auto_focus : "Elm1"
});
On dirait que pour TinyMCE 4, certaines de ces solutions ne fonctionnent plus.
// Ne semble pas fonctionner sur TinyMCE 4
tinymce.execCommand('mceFocus',false,'id_of_textarea');
// n'a pas fonctionné
$("id_of_textarea").tinymce().focus();
tinyMCE.activeEditor.focus();
Ce qui fonctionne pour moi
// Fonctionne très bien dans Chrome, mais pas du tout dans Firefox
tinyMCE.init({
//...
auto_focus : "id_of_textarea"
});
// Ajoute ceci pour que Firefox fonctionne aussi
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);
}
tinyMCE.get ('Description'). getBody (). focus ();
Ce qui précède fonctionne également dans Firefox, Chrome et IE. Je n'ai pas testé dans d'autres navigateurs.
Cela devrait passer du focus à la textarea TinyMCE:
$("#id_of_tinyMCE_area").focus();
Pour la mise au point automatique, la documentation du premier exemple indique que - https://www.tinymce.com/docs/configure/integration-and-setup/#auto_focus
tinymce.init({
selector: '#textarea_id',
auto_focus: '#textarea_id'
});
Cela fonctionne pour moi dans Version TinyMCE4.7.6
J'utilise la fonction suivante pour focaliser l'éditeur avec thinyMCE Ceci utilise jQuery, mais il serait facile de le supprimer et d'utiliser document.querySelectorAll()
. Utilisez babel si vous en avez besoin dans es5.
let focusEditor = function(editorContainer) {
let tinymce;
if (/iPad|iPhone|iPod/.test(navigator.platform)) { return; }
let id = $('.text-editor', editorContainer.innerHTML).first().attr('id');
if (tinymce = window.tinyMCE.get(id)) {
try {
return tinymce.focus();
} catch (error) {
return tinymce.on('init', function() { return this.focus(); });
}
} else {
return $(`#${id}`, editorContainer).focus();
}
}
EditorContainer est un élément quelconque entourant la zone de texte tinyMCE, par exemple. un div avec id 'text-container' que vous pouvez appeler focusEditor($('#text-container'))
ou dans React focusEditor(React.findDOMNode(this))
Cela fonctionne pour moi (TinyMCE version 4.7.6):
tinymce.activeEditor.fire("focus")