Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Pegar sólo el número de caracteres deseado (http://www.forosdelweb.com/f78/pegar-solo-numero-caracteres-deseado-398770/)

pineda 01/06/2006 11:41

Pegar sólo el número de caracteres deseado
 
Espero me puedan ayudar con lo siguiente:

Ya he validado un textbox, para que sólo acepte el número de caracteres que aparecen en su propiedad maxlenght, cuando la propiedad multiline está en true.

La cosa es que si se copia y pega un texto de mayor longitud al darle el submit da error por los caracteres de más.

Quisiera saber si hay alguna forma de validar el número de caracteres que se copian en el textbox y si se puede recortar el texto a sólo los caracteres que uno decida.

En caso contrario supongo que tendré que hacer una validación del campo cuando pierda el foco o algo así.

En fin. Cualquier sugerencia es buena.

Gracias de antemano!! :-)

pineda 01/06/2006 16:41

Ya estuvo... creo
 
Ok, pues después de un poco de ver por ahi algunos sitios y pelearme un poco con el visual:neurotico .

Aqui les dejó como lo implementé:

Función javascript:
NombreControl=nombre que le dimos a nuestro control.
maximo=número máximo de caracteres que queremos tenga el textbox, yo lo tomé con la propiedad maxlenght

Código:

function fnPaste(NombreControl, maximo)
{
        var exp=window.clipboardData.getData("Text");  // Lo que hay en el portapapeles
        var exp2 = document.getElementById (NombreControl).innerText;            // Lo que hay en el textbox
        var cont=exp.length;
        var cont2=exp2.length;
        if(cont2!=0)  // Si el textbox no está vacío
        {
                var total=cont+cont2;
                if(total>maximo)  // Si lo que queremos copiar es mayor de la propiedad maxlenght
                {
                        total=maximo-cont2;
                        exp2=exp2 + exp.substr(0, total);
                        event.returnValue = false;
                        document.getElementById(NombreControl).innerText=exp2;
                }
        }
        else // Si el textbox está vacío
        {
                if(cont>maximo) // Si es mayor a la propiedad maxlenght
                {
                        exp=exp.substr(0, maximo);       
                        event.returnValue = false;
                        document.getElementById(NombreControl).innerText=exp;
                }
        }
}

ya dentro del visual hay que agregar la función a los atributos:
Código:

this.txtDescripcion.Attributes.Add("onpaste", "fnPaste('txtDescripcion', "+ txtDescripcion.MaxLength+");");
pues bueno eso es lo que hice, todavía no está muy bien detallado pero si alguien tiene algún otro aporte es bienvenido.

Aquí les dejo el link por si quieren hacer alguna otra cosa:
http://msdn.microsoft.com/library/de...ts/onpaste.asp

xknown 01/06/2006 19:00

Me temo que eso sólo funcionará en IE.

Saludos


La zona horaria es GMT -6. Ahora son las 09:42.

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