Foros del Web » Programando para Internet » Javascript »

Seleccionar texto en TEXTAREA e INPUT-TEXT

Estas en el tema de Seleccionar texto en TEXTAREA e INPUT-TEXT en el foro de Javascript en Foros del Web. Hola señores Prepare un script que selecciona el texto contenido en los TEXTAREA e INPUT-TEXT y buscando un poco en la web encontre la forma ...
  #1 (permalink)  
Antiguo 03/01/2010, 09:36
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Seleccionar texto en TEXTAREA e INPUT-TEXT

Hola señores

Prepare un script que selecciona el texto contenido en los TEXTAREA e INPUT-TEXT y buscando un poco en la web encontre la forma de como seleccionar el texto dentro de un DIV.

Bajo navegadores WebKit, el seleccionar textos dentro de DIV's se comporta un poco extraño (aunque lo hace), asi que prefiero usar solo seleccion a TEXTAREA e INPUT-TEXT. El problema es que al seleccionar estos, si el usuario aprieta la tecla de borrar o cualquiera otra por error, el texto se borra o sustituye, cosa que no quiero.

Alguna idea de como bloquear los TEXTAREA e INPUT-TEXT de forma que al darles click seleccione el texto y no se borre ??. Trate con "textobj.disabled = true", pero me bloquea los campos y no deja seleccionarlos.

Gracias a cualquier link, ayuda o idea que me puedan ofrecer.
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 03/01/2010 a las 09:56
  #2 (permalink)  
Antiguo 03/01/2010, 10:13
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Seleccionar texto en TEXTAREA e INPUT-TEXT

Quizá deberías aclarar un poco el objetivo final a ver si hay alguna alernativa mejor. En principio se me ocurre que podrías crear (estáticamente o al vuelo) un div con posición absoluta y z-index alto, que se ubique justo en la misma posición del campo, cubriéndolo e impidiendo su reescritura-
Las medidas de este nuevo elemento podés asignarlas usando el offsetWidth y offsetHeight del campo. Y la ubicación con algo como esto:
Código PHP:
function getElementPosition() {
        var 
offsetTrail this;
        var 
offsetLeft 0;
        var 
offsetTop 0;
        while (
offsetTrail) {
            
offsetLeft += offsetTrail.offsetLeft;
            
offsetTop += offsetTrail.offsetTop;
            
offsetTrail offsetTrail.offsetParent;
        }
        return {
left:offsetLefttop:offsetTop};
}
var 
pos=getElementPosition.call(document.getElementById('idcampo'));
alert(pos.top+'--'+pos.left); 
  #3 (permalink)  
Antiguo 03/01/2010, 10:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Seleccionar texto en TEXTAREA e INPUT-TEXT

Edito: no entendí que lo que querías impedir eran acciones de teclado. Olvida mi post anterior.
  #4 (permalink)  
Antiguo 03/01/2010, 11:15
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Seleccionar texto en TEXTAREA e INPUT-TEXT

Gracias por responder @Panino5001. Para dejar mas claro las cosas, aqui dejo mi script:

Código PHP:
function selectInnerTxt (tg,clsNm)
{
    
tg.toLowerCase ();
    var 
objs document.getElementsByTagName(tg);
    
//
    
for (var 0objs.lengthi++)
    {
       if ( 
String(objs[i].getAttribute('class')).indexOf(clsNm) != -)
       {
          
objs[i].title 'Click para copiar';
          
objs[i].onclick = function ()
          {
             if (
tg == 'input' || tg == 'textarea')
             {
                
this.select ();
             }
             if (
tg == 'div' || tg == 'span')
             {
                var 
range;
                if (
document.selection)
                {
                    
range document.body.createTextRange ();
                    
range.moveToElementText (this);
                    
range.select ();
                } else if (
window.getSelection)
                {
                    
range document.createRange ();
                    
range.selectNode (this);
                    
window.getSelection().addRange (range);
                }
             }
          }
       }
    }

A esa funcion le paso los parametros del tipo de tag a buscar en toda la pagina mas los objetos que tengan una clase en especifico. Como ves, esto afecta a todos los objetos en la pagina a partir de los parametros para hacerlo mas automatizado.

Como podria corregirlo para que no se borre el texto de los TEXTAREA e INPUT-TEXT ??. Alguna sugerencia ??. Muchas gracias por tu ayuda.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #5 (permalink)  
Antiguo 03/01/2010, 14:11
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Seleccionar texto en TEXTAREA e INPUT-TEXT

agregale atributo readonly a los textarea e inputs. pero por supuesto, no tiene modo de modificar el contenido a no ser que luego le quites el readonly con javascript.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 03/01/2010, 17:19
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Seleccionar texto en TEXTAREA e INPUT-TEXT

Eso es @zerokilled, eso soluciono mi caso. No quiero que se modifique el contenido de los Input-Text porque este vendra de la BD con PHP. La info en los campos sera exclusivamente para ser copiada por el usuario.

No conocia el atributo "readonly", asi que muchas gracias por señalarmelo y por la ayuda.
__________________
JuniHH
- Mi blog
- Mi portafolio

Etiquetas: seleccionar, textarea
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 09:52.