Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Problema javascript (selectionStart) en un textbox desde asp.net (http://www.forosdelweb.com/f29/problema-javascript-selectionstart-textbox-desde-asp-net-447687/)

vanbel 04/12/2006 04:17

Problema javascript (selectionStart) en un textbox desde asp.net
 
Hola a todos,

tengo un textbox de servidor personalizado en el que quiero controlar la seleccion de texto. el problema esta que controlo las pulsaciones de teclado a traves de un javascript y miro si el texto esta seleccionado de la siguiente manera:

function WriteKey (Ctl, keyCode, Min, Max, SM, SD, Dec, FixDec)
{
if (document.selection.type != 'None')
if (document.selection.createRange().text.length < Ctl.value.length)
{
inicio=Ctl.selectionStart;
fin=Ctl.selectionEnd;

}

}

Esta funcion se le asigna al input(textbox) al hacer el Render de la pagina.
_txt.Attributes.Add("onkeypress", "WriteKey(this, event.keyCode, " + _minimo + ", " + _maximo + ", '" + _culture.NumberFormat.NumberGroupSeparator + "', '" + _culture.NumberFormat.NumberDecimalSeparator + "', " + _decimales + ", " + _fijardecimales.ToString().ToLower() + ");");

Ctl se corresponde con mi objeto textbox. El problema es que cuando hago el Ctl.selectionStart o selectionEnd me dice "undefined", he visto este ejemplo igual en otras webs pero la diferencia es que era una funcion javascript llamada directamente en el evento del input desde html.

¿Alguien me puede ayudar por favor? Es urgente... gracias de antemano.

Vanbel

javiermil 04/12/2006 06:34

Has visto en depuración que contiene Ctl? Esto no te da problema Ctl.value.length?

Otra opcion sería:

var txtId=<%=textbox.ClientId %>;

function WriteKey (keyCode, Min, Max, SM, SD, Dec, FixDec)
{
var Ctl=document.getElementById(txtId);
if (document.selection.type != 'None')
if (document.selection.createRange().text.length < Ctl.value.length)
{
inicio=Ctl.selectionStart;
fin=Ctl.selectionEnd;
}

}

Con esto no tendrías problemas. Pero de todos modos, mirate en depuración que contiene Ctl. Saludos

vanbel 04/12/2006 09:03

Problema javascript (selectionStart) en un textbox desde asp.net
 
Hola, gracias por responderme,

te cuento:
el textbox sobre el que estoy haciendolo es un textbox personalizado que heredan de Control.
En mi objeto Ctl si que tengo el objeto textbox su Id es "Lineas_DataGridLineas__ctl2_TXTCantidad_TXT" y cuando hago Ctl.value.length no tengo problema me devuelve el valor correctamente. Solo me da "undefined" cuando intento hacer Ctl.selectionStart, es como si no reconociera este metodo. En otros ejemplos, yo he visto hacerlo con un input html pero claro haciendolo todo desde cliente. Es decir, lo hacian llamando a la funcion javascript desde el evento del textbox, en este caso el evento del textbox estoy añadiendoselo en el Render:


Cita:

protected override void Render(HtmlTextWriter output)
{
_txt.Attributes.Add("onkeypress", "WriteKey(this, event.keyCode, " + _minimo + ", " + _maximo + ", '" + _culture.NumberFormat.NumberGroupSeparator + "', '" + _culture.NumberFormat.NumberDecimalSeparator + "', " + _decimales + ", " + _fijardecimales.ToString().ToLower() + ");");
}
y mi funcion javascript WriteKey:

Cita:

function WriteKey (Ctl, keyCode, Min, Max, SM, SD, Dec, FixDec)
{
if (document.selection.type != 'None')
if (document.selection.createRange().text.length < Ctl.value.length)
{
inicio=Ctl.selectionStart;
fin=Ctl.selectionEnd;
}

}

javiermil 04/12/2006 10:35

Lee esto http://www.theblueform.com/Home/TheMakingOf.aspx, el articulo "Getting/Setting the Selected Text (Caret Positions) within a Text Box in Internet Explorer and Firefox". Ahí dice que esas propiedades no existen en ie y firefox, y explica una alternativa de hacerlo pero no es directa. Saludos

vanbel 04/12/2006 18:03

javascript (selectionStart) en un textbox desde asp.net
 
Muchas gracias. Me ha servido de mucho. No sabía que internet explorer no acepta estos metodos. :-)


La zona horaria es GMT -6. Ahora son las 08:00.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.