2011-10-05 13 views
6

Eventuali duplicati:
CKEditor - Set cursor position to end of textImpostare cursore alla fine dopo focalizzazione CKEditor

Ho un <div> con un sacco di contenuti. Dopo un clic su questo div, CKEditor viene caricato per modificare questo div.

Ora mi piacerebbe impostare il cursore di omissione/cursore alla fine del contenuto dopo averlo sostituito con l'editor.

Il mio codice attualmente è qualcosa di simile:

var editor = CKEDITOR.replace('content', { 
    // Settings 

    // Event listeners 
    on: { 
    instanceReady: function(evt) { 
     var editor = evt.editor; 

     // give focus (displays caret at the beginning of the content, not the end) 
     editor.focus(); 
    } 
    } 
}); 

risposta

4

Dopo un po 'di giocherellare, li ho di lavorare con il seguente codice:

$(document).ready(function() { 

    CKEDITOR.on('instanceReady', function(ev) { 

     ev.editor.focus(); 

     var s = ev.editor.getSelection(); // getting selection 
     var selected_ranges = s.getRanges(); // getting ranges 
     var node = selected_ranges[0].startContainer; // selecting the starting node 
     var parents = node.getParents(true); 

     node = parents[parents.length - 2].getFirst(); 

     while (true) { 
      var x = node.getNext(); 
      if (x == null) { 
       break; 
      } 
      node = x; 
     } 

     s.selectElement(node); 
     selected_ranges = s.getRanges(); 
     selected_ranges[0].collapse(false); // false collapses the range to the end of the selected node, true before the node. 
     s.selectRanges(selected_ranges); // putting the current selection there 
    } 

}); 

L'idea è:

  1. Ottenere il nodo principale (non il corpo)
  2. Anticipo al nodo successivo, fino a quando non ci sono più nodi da raggiungere.
  3. Selezionare l'ultimo nodo.
  4. Collapse è
  5. Set gamma
+0

Grande ... Ha funzionato :) (dimenticata su questa funzione, e abbiamo deciso di lasciare questa caratteristica out ...) –

+0

ero pronto a rinunciare pure ma il mio capo lo voleva davvero davvero: P –

+0

@ KeesC.Bakker sperando che tu possa aiutarmi ... Sto iniziando un ckeditor tramite il seguente in fondo alla mia pagina: window.onload = function() { CKEDITOR .Rimontare ('Messaggio'); }; Quindi, dove esattamente metto il codice che hai sopra per fare in modo che funzioni? Ho la seguente nel mio html: E il $ messaggio è il seguente:

Abela