Foros del Web » Programando para Internet » Javascript »

Sustituir espacios en blanco con "_"

Estas en el tema de Sustituir espacios en blanco con "_" en el foro de Javascript en Foros del Web. Hola, quiero que en el evento onkeyup de un input me compruebe si se ha escrito un espacio en blanco, y si es así que ...
  #1 (permalink)  
Antiguo 10/11/2003, 17:15
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 10 meses
Puntos: 0
Sustituir espacios en blanco con "_"

Hola, quiero que en el evento onkeyup de un input me compruebe si se ha escrito un espacio en blanco, y si es así que lo sustituya por un guión bajo "_". Tengo este script:
Código PHP:
function comprueba(esto){
var 
contenido=""
var Letra;
palabra=esto.value;
for (
i=0;i<palabra.length;i++){
Letra=palabra.charAt(i);
  if (
Letra==" "){
    
Letra=palabra.replace(" ","_");
    
//Letra=palabra.split(" ").join("_");
    
contenido=Letra;
  }
  else{
contenido=Letra;}
}
//fin del for
return contenido;

Pero cuando escribo dos caracteres borra el contenido el input.
A ver si me podeis echar una mano. Gracias
  #2 (permalink)  
Antiguo 10/11/2003, 17:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola knarfy:

Recuerdo haber puesto en las FAQs un script muy sencillo para reemplazar elementos en un texto...

Adaptado a tu pregunta sería algo así:

function comprueba(esto){
esto.value = esto.value.split(" ").join("_");
}

No sé porqué lo tienes como un comentario...

Hay algo en tu ejemplo que me parece que no está bien:
Lo voy a reescribir por si no te funciona lo anterior...

function comprueba(esto){
var contenido=""
for (var i = 0; i < esto.value.length; i ++){
contenido += (esto.value.charAt(i) == " ") ? "_" : esto.value.charAt(i);
}//fin del for
return contenido;
}

Creo que el objetivo de la función es devolver una cadena igual pero con los reemplazos...

Saludos
  #3 (permalink)  
Antiguo 11/11/2003, 05:14
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 10 meses
Puntos: 0
Funciona perfectamente, gracias. Una cosa, podrías explicarme el significado de esto?:
contenido += (esto.value.charAt(i) == " ") ? "_" : esto.value.charAt(i);
La variable contenido se incremente con el valor del caracter en (i) igualado a "espacio" y ? "_":esto.value.charAt(i); ¿?¿?
  #4 (permalink)  
Antiguo 11/11/2003, 06:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola otra vez:

Cuando se pone a = b; significa que la variable a toma el valor b, pero con a += b se quiere decir que al valor de a hay que sumarle b... lo mismo si se pone -= es una resta.

Si en una asignación se pone una condición seguida de "?" y 2 valores separados por ":" significa que si se cumple la condición se asigna el primero de los valores y sino el segundo.


En resumen, la linea que no conoces:
contenido += (esto.value.charAt(i) == " ") ? "_" : esto.value.charAt(i);
... equivale a:
if (esto.value.charAt(i) == " ")
contenido = contenido + "_"
else
contenido = contenido + esto.value.charAt(i);

Espero que lo entiendas.

Saludos
  #5 (permalink)  
Antiguo 12/11/2003, 06:13
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 10 meses
Puntos: 0
Eres un fenómeno. Gracias.
  #6 (permalink)  
Antiguo 12/11/2003, 14:22
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Hola, knarfy y caricatos.

Aunque veo que ya está resuelto el tema, voy a poner otra opción para que haya donde elegir:

function comprueba(esto){
palabra=esto.value;
palabra = palabra.replace(/\s/g,"_");

Saludos,
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 15:05.