Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema javascript (selectionStart) en un textbox desde asp.net

Estas en el tema de Problema javascript (selectionStart) en un textbox desde asp.net en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/12/2006, 04:17
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta 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
  #2 (permalink)  
Antiguo 04/12/2006, 06:34
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 20 años, 6 meses
Puntos: 2
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
  #3 (permalink)  
Antiguo 04/12/2006, 09:03
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta 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;
}

}
  #4 (permalink)  
Antiguo 04/12/2006, 10:35
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 20 años, 6 meses
Puntos: 2
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
  #5 (permalink)  
Antiguo 04/12/2006, 18:03
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años, 3 meses
Puntos: 0
De acuerdo 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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:45.