0

We have a few text areas that have some text the user may copy to their clipboard.

Without going into too much detail as it will just complicate a straightforward question:

Is it possible to detect if a textarea's contents are 'selected'?


I should mention using the onclick (or other) event handlers are (ideally...) not an option.

As this text is selected by an 'outside of the textarea' action.

The flow is somewhat as follows:

Drop down choice is chosen -> Text in textarea is selected

Or

Textarea is clicked (onclick) -> Text in textarea is selected

I know we could use a whole bunch of event handlers to detect the state of the text in the textarea, but I was hoping there was a simpler way of doing by detecting the state of the text inside the textarea via JavaScript.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
anonymous-one
  • 14,454
  • 18
  • 60
  • 84
  • See http://stackoverflow.com/questions/401593/javascript-textarea-selection/403526#403526 and http://stackoverflow.com/questions/717224/how-to-get-selected-text-in-textarea – Sahil Muthoo Sep 13 '11 at 08:31

3 Answers3

3

The selectionStart and selectionEnd properties hold the selection indexes.

var textarea = document.getElementById("textarea1");
if(textarea.selectionStart == textarea.selectionEnd) alert("Nothing is selected!")
Rob W
  • 341,306
  • 83
  • 791
  • 678
2

This code is taken from this question. You'll need to adapt the code slightly, but it shows how to access the selection for both Mozilla and Internet Explorer browsers -

function ShowSelection()
{
  var textComponent = document.getElementById('Editor');
  var selectedText;
  // Internet Explorer version
  if (document.selection != undefined)
  {
    textComponent.focus();
    var sel = document.selection.createRange();
    selectedText = sel.text;
  }
  // Mozilla version
  else if (textComponent.selectionStart != undefined)
  {
    var startPos = textComponent.selectionStart;
    var endPos = textComponent.selectionEnd;
    selectedText = textComponent.value.substring(startPos, endPos)
  }
  alert("You selected: " + selectedText);
}
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
ipr101
  • 24,096
  • 8
  • 59
  • 61
1

Have a look at this demo. They use the jQuery - fieldSelection plugin.

Reto Aebersold
  • 16,306
  • 5
  • 55
  • 74