2010-11-23 59 views
2

Je veux vérifier le nœud du texte sélectionné. Si c'est span, une autre fonction éditera les classes qui lui sont appliquées. Si c'est le même que le nœud parent, alors le code encapsulera la sélection dans span et définira ses styles. Le problème ici que je suis confronté est, comment déterminer, si l'utilisateur a sélectionné le texte entier dans l'éditeur ou seulement du texte. Si l'utilisateur sélectionne le texte entier, je souhaite appliquer les styles au noeud parent au lieu d'y ajouter une nouvelle plage et des styles. Voici mon code -Comment trouver si l'utilisateur a sélectionné tout le texte ou une partie de texte dans minuscule mce

var ed=tinyMCE.getInstanceById('textAreaId'); 
    var sel = ed.selection.getContent(); 

    if(trim(sel)!="") { 
    //get the node of the selection 
    var thisNode=tinyMCE.activeEditor.selection.getStart().nodeName; 
ed_Property=propertyName; 
ed_PropertyVal=propertyValue; 
//get the root node inside editor 
var parentNode=tinyMCE.activeEditor.getBody().firstChild.nodeName; 
if(thisNode=="SPAN") { 
nodeclass=$(tinyMCE.activeEditor.selection.getNode()).attr('class');  
//edit span properties 
editSpanProperties(nodeclass,propertyName,propertyValue); 

} 
else if(thisNode==parentNode) { 
    var elmType="span"; 
    var Spanid1=createSpanId(targetToStyle,elmType); 
    Spanid=targetToStyle+"_"+elmType+"_"+Spanid1; 
    var strStyle=ed_Property+":"+ed_PropertyVal; 
//wrap selection in a span 
sel = "<span id='"+Spanid+"' style='"+strStyle+"'>" + sel + "</span>"; 
//set content  
ed.selection.setContent(sel); 
//retain the selection 
    ed.selection.select(ed.dom.select('#'+Spanid)[0],false); 

} 

    else { 

    //here I need to check if user has selected whole text and set properties 
    setStylesOnEditor(templateSection,propertyName,propertyValue);  
    }//if ends 


    } 
    else if(trim(sel)=="") { 
    alert('No text selected'); 
    } 

Répondre

0

comment déterminer, si l'utilisateur a sélectionné tout le texte dans l'éditeur ou seulement du texte.

Vous devez comparer le texte sélectionné avec le contenu des éditeurs:

var content_editor = $(ed.getBody()).text(); 

var content_selection = ed.selection.getContent({format : 'text'}); 

// now compare both either characterwise or as whole string, 
// you might need to strip whitespace characters from the strings! 
// and do what you want to do in each case