2010-11-24 7 views
0

Je souhaite obtenir le texte sélectionné dans la zone de texte lorsque l'on clique sur 'span'. Quand je clique sur le bouton, la sélection fonctionne mais pas quand je clique sur span.
Peut-être parce que la sélection est perdue quand on clique sur span, mais cela ne se produit pas quand on clique sur le bouton? Comment le corriger?Récupération du texte sélectionné à partir de la zone de texte lorsque vous cliquez sur la plage dans IE

function Copy() { 
    var theSelection = document.selection.createRange(); 
    alert(theSelection.text);   
} 

<div> 
    <span class="Icon" onclick="Copy();"></span> <input type="button" value="Copy" onclick="Copy();" style="float:left;" /> 
</div> 
<div style="clear:both;"> 
    <textarea rows="2" cols="20" style="height:370px;width:800px;"></textarea> 
</div> 

IE uniquement!

Online Example

Mise à jour:

Voici comment je le fais dans Firefox:

if (window.getSelection){ // Firefox, Opera, Safari 

    var textbox = document.getElementById("box"); 
    textbox.focus(); 
    theSelection = document.activeElement.value.substring(document.activeElement.selectionStart, document.activeElement.selectionEnd); 

alert(theSelection); 
} 

Répondre

0

Oui, c'est exactement ça: au moment où l'événement se déclenche de clic, la sélection a été perdu. Cela fonctionnera si vous utilisez onmousedown au lieu de onclick.

MISE À JOUR

Une autre alternative qui fonctionne uniquement dans Internet Explorer est d'ajouter l'attribut suivant à la <span>. Cela empêche la durée d'affecter la sélection en la rendant unselectable:

unselectable="on" 

MISE À JOUR 2

Dans d'autres navigateurs, la façon d'obtenir le texte sélectionné est d'utiliser les selectionStart et selectionEnd propriétés:

function Copy() { 
    var textbox = document.getElementById("box"); 
    textbox.focus(); 
    var selectedText = ""; 
    if (typeof textbox.selectionStart == "number") { 
     selectedText = textbox.value.slice(textbox.selectionStart, textbox.selectionEnd); 
    } else if (document.selection) { 
     selectedText = document.selection.createRange().text; 
    } 
    alert(selectedText); 
} 
+0

mais pourquoi cela fonctionne-t-il avec le bouton? – urker

+0

mousedown n'est pas le comportement que je désire ... Je veux qu'il fonctionne sur la souris comme n'importe quel autre bouton – urker

+0

OK. Les boutons fonctionnent différemment, je pense, car ils n'affectent pas la sélection. Quoi qu'il en soit, mettre à jour ma réponse ... –

Questions connexes