2010-11-27 4 views
2

voici mon code:comment sélectionner tous les mots quand un focus div en utilisant jquery

<div id="box" style="border:1px solid red;height:100px;width:150px;position:relative;background:#eee"> 
     <div id="head" style="background:black">drag me</div> 
     <div id="content" contenteditable=true style="border-bottom:1px solid red;height:70px;margin-bottom:5px;"> edit it </div> 
     <input id="ok" type="button" value="ok"/> 
     <input id="cancel" type="button" value="cancel"/> 
    </div> 

et le script est:

$('#content').focus() 

la démo est ici: http://jsfiddle.net/VRxZe/8/

comment peut je sélectionne 'edit it'

merci

+0

N'avez-vous pas déjà fait cela? – Shuo

+0

faire le texte comme quand je double-cliquez quand il se concentre. – zjm1126

+0

et comme clic droit -> sélectionnez tout. – zjm1126

Répondre

3

Si vous voulez sélectionner du texte dans un élément, vous pouvez utiliser des plages. Le code ci-dessous devrait fonctionner avec Firefox et Opera et Chrome. Une autre histoire est IE. Pour ce navigateur, vous devrez create nouvel objet TextRange et utiliser ses méthodes moveToElementText et sélectionnez.

var content = document.getElementById('content'); 
var selection = window.getSelection(); 
var range = document.createRange(); 
range.selectNodeContents(content); 
selection.removeAllRanges(); 
selection.addRange(range); 
content.focus() 

Le code ci-dessous pour IE

var content = document.getElementById('content'); 
var rng = document.body.createTextRange(); 
rng.moveToElementText(content); 
rng.select(); 
content.focus() 

Hope this helps.

+0

chrome parfois ne peut tout sélectionner. – zjm1126

+0

Impossible de reproduire ce problème. Quel contenu avez-vous dans cette DIV? Le texte "edit it" ou autre chose? Est-ce que cela se passe seulement en chrome? Quelle version de chrome utilisez-vous? La mienne est 9.0.587.0 – Rafael

+0

merci beaucoup, c'est ok maintenant. – zjm1126

2

Eh bien, vous êtes presque là :)

$('#box').focus(function() 
      { 
       $('#content', this).select(); 

      }); 
+0

Fait quelques modifications. J'espère que ceci est plus proche de votre exemple de code. –

+0

Est-ce correct? Cela ne déclenche-t-il pas un événement 'select' plutôt que de sélectionner réellement l'élément? –

+0

@Tim: Si je ne me trompe pas .. si le gestionnaire attaché à l'événement 'select' ne fait pas de 'e.preventDefault()' alors le texte serait sélectionné (comportement par défaut) –

Questions connexes