Para modificar en Javascript el contenido de un textarea, podemos usar las propiedades selectionStart
y selectionEnd
que tenemos disponibles en Firefox y Opera.
Sin embargo, éstas no están disponibles en IE, por lo que debemos utilizar un feo truco para añadirlas.
Ahí va el código:
function UglyFixForSelectionStartAndSelectionEndForIE(id) { var element = $get(id); if(document.selection) { // The current selection var range = document.selection.createRange(); // We'll use this as a 'dummy' var stored_range = range.duplicate(); // Select all text stored_range.moveToElementText( element ); // Now move 'dummy' end point to end point of original range stored_range.setEndPoint('EndToEnd', range ); // Now we can calculate start and end points element.selectionStart = stored_range.text.length - range.text.length; element.selectionEnd = element.selectionStart + range.text.length; } }
Y si estamos usando el ASP.NET Ajax Control Toolkit, bastará con utilizar:
var element = this.get_element(); if (Sys.Browser.agent === Sys.Browser.InternetExplorer) UglyFixForSelectionStartAndSelectionEndForIE(element.id); var start = element.selectionStart; var end = element.selectionEnd; var length = element.textLength;
La función es original de Stickblog
Filed under: Javascript, Tech | Tagged: AJAX, ASP.NET, IE, Javascript, selection, textarea | 4 Comments »