Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 04-dic-2006, 03:17   #1 (permalink)
vanbel ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
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
vanbel está desconectado   Responder Citando
Antiguo 04-dic-2006, 05:34   #2 (permalink)
javiermil ha deshabilitado el karma
 
Avatar de javiermil
 
Fecha de Ingreso: agosto-2004
Mensajes: 516
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
javiermil está desconectado   Responder Citando
Antiguo 04-dic-2006, 08:03   #3 (permalink)
vanbel ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
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;
}

}
vanbel está desconectado   Responder Citando
Antiguo 04-dic-2006, 09:35   #4 (permalink)
javiermil ha deshabilitado el karma
 
Avatar de javiermil
 
Fecha de Ingreso: agosto-2004
Mensajes: 516
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
javiermil está desconectado   Responder Citando
Antiguo 04-dic-2006, 17:03   #5 (permalink)
vanbel ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
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.
vanbel está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:48.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93