Foros del Web » Programando para Internet » Javascript »

seleccionar texto en input al seleccionar?

Estas en el tema de seleccionar texto en input al seleccionar? en el foro de Javascript en Foros del Web. Hola necesito que el contenido de un input se seleccione cuando haga click en el. Digamos que tengo un input <input type="text" name="POST_CODE" size="8" value="05073"> ...
  #1 (permalink)  
Antiguo 30/07/2007, 07:13
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
seleccionar texto en input al seleccionar?

Hola

necesito que el contenido de un input se seleccione cuando haga click en el.

Digamos que tengo un input
<input type="text" name="POST_CODE" size="8" value="05073">

Cuando se carga la pagina aparece por defecto con el valor 05073.
como hago para que cuando haga click en el input quede seleccionado el value de este "05073"

algo como getElemById(mi input).selected=true;

gracias
  #2 (permalink)  
Antiguo 30/07/2007, 07:28
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: seleccionar texto en input al seleccionar?

<input type="text" id="x" name="POST_CODE" size="8" value="05073" onclick="seleccionar()">

y el javascript:

function seleccionar(){
document.getElementById("x").selectionStart = 0;

}
  #3 (permalink)  
Antiguo 30/07/2007, 07:30
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: seleccionar texto en input al seleccionar?

Parece ser que en IE no funciona. En firefox si funciona



Saludos
  #4 (permalink)  
Antiguo 30/07/2007, 08:25
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: seleccionar texto en input al seleccionar?

cierto en ie no funciona

probe con comillas y con true pero tampoco funciona

.selectionStart = "0" ;
y
.selectionStart = '0' ;
y
.selectionStar = true ;

alguna idea ...

Última edición por chefnelone; 30/07/2007 a las 08:38
  #5 (permalink)  
Antiguo 31/07/2007, 09:17
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: seleccionar texto en input al seleccionar?

Tenía este código para seleccionar un caracter:

Código PHP:
/********
    COLOCACIÓN DEL CURSOR (selección): Da el foco a la caja colocando el cursor de inserción en la posición pos (selecciona un caracter)
********/
function setSelectionRange(inputselectionStart) {
    var 
selectionEnd selectionStart 1;
    if (
input.setSelectionRange) {
        
input.focus();
        
input.setSelectionRange(selectionStartselectionEnd);
    }
    else if (
input.createTextRange) {
        var 
range input.createTextRange();
        
range.collapse(true);
        
range.moveEnd('character'selectionEnd);
        
range.moveStart('character'selectionStart);
        
range.select();
    }

Pero bueno, lo que hace es seleccionar un sólo caracter. Lo que hay que modificar de aquí es el selectionStart (que será cero siempre) y el selectionEnd, que será el input.value.length siempre, para que seleccione todo el campo. Jugando con esos dos valores podemos seleccionar lo que queramos.

Todo esto se puede lanzar en el evento onfocus, y ya tendríamos todo controlado.

Probado en IE6 y FF2.




Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 09/08/2007, 10:32
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: seleccionar texto en input al seleccionar?

lo he intentado con esto pero parece que algo esta mal

alguna idea?

codigo:

function selecciona_value(idInput) {

valor_input = document.getElementById(idInput).value ;
longitud = valor_input.length;

var selectionEnd = 0 + 1;
if (document.getElementById(idInput).setSelectionRang e) {
document.getElementById(idInput).focus();
document.getElementById(idInput).setSelectionRange (0, longitud);
}
else if (input.createTextRange) {
var range = document.getElementById(idInput).createTextRange() ;
range.collapse(true);
range.moveEnd('character', 0);
range.moveStart('character', longitud);
range.select();
}
}

lo he echo con usando getElementById... porque no se como hacerlo de otra forma
donde esta el error?
necesito que seleccione el todo el contenido del input onfocus()
  #7 (permalink)  
Antiguo 09/08/2007, 12:49
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: seleccionar texto en input al seleccionar?

Hola:

Código:
function selecciona_value(idInput) {

valor_input = document.getElementById(idInput).value ;
longitud = valor_input.length;

var selectionEnd = 0 + 1;
if (document.getElementById(idInput).setSelectionRange) {
document.getElementById(idInput).focus();
document.getElementById(idInput).setSelectionRange (0, longitud);
}
else if (input.createTextRange) {
var range = document.getElementById(idInput).createTextRange() ;
range.collapse(true);
range.moveEnd('character', 0);
range.moveStart('character', longitud);
range.select();
}
}
Tienes en el código marcado en rojo las cosas que he cambiado para que me funcione bien. La variable selectionEnd no la utilizas para nada, utilizas longitud en su caso, así que no sería útil declararla.

La condicional para FF tiene una variable no definida, input, por lo cual no puede entrar nunca en la condicional. De hecho, da error.

Lo último es que habías puesto en end a 0 y el start a longitud, y debería ser al revés.



Con esos cambios, funcionará perfecto. De todas maneras veo que utilizas su ID, te voy a dejar el ejemplo con this para que te vayas haciendo a él, es mucho más cómodo:
Código PHP:
<input type="text" onfocus="selecciona_value(this)" value="soy todo el texto" />

<
script type="text/javascript">

function 
selecciona_value(objInput) {

    var 
valor_input objInput.value;
    var 
longitud valor_input.length;

    if (
objInput.setSelectionRange) {
        
objInput.focus();
        
objInput.setSelectionRange (0longitud);
    }
    else if (
objInput.createTextRange) {
        var 
range objInput.createTextRange() ;
        
range.collapse(true);
        
range.moveEnd('character'longitud);
        
range.moveStart('character'0);
        
range.select();
    }
}

</script> 


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #8 (permalink)  
Antiguo 09/08/2007, 13:07
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: seleccionar texto en input al seleccionar?

gracias derkenuke

Funciona muy bien en ie6, ie7 y FF (en windows)
Pero en safari y FF en Macintosh no funciona.

Aunque de momento voy a dejarlo... Alguien sabe cual es el truco para mac ?
  #9 (permalink)  
Antiguo 09/08/2007, 13:21
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: seleccionar texto en input al seleccionar?

googleando me entero que el problema es que safari y ff en mac no soportan
createTextRange

alguna idea
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.
Tema Cerrado




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