Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] No permitir escribir más de un espacio

Estas en el tema de No permitir escribir más de un espacio en el foro de Javascript en Foros del Web. Buenas a todos... Tengo un input type text en el que se escriben una o varias palabras. Si son varias, la separación entre ellas es ...
  #1 (permalink)  
Antiguo 03/10/2013, 18:00
 
Fecha de Ingreso: julio-2013
Mensajes: 44
Antigüedad: 10 años, 9 meses
Puntos: 0
No permitir escribir más de un espacio

Buenas a todos...

Tengo un input type text en el que se escriben una o varias palabras. Si son varias, la separación entre ellas es de un sólo espacio. ¿Cómo podría hacer para no dejar escribir al usuario más de un espacio?. Mi idea es que si escribe un espacio salga en pantalla, pero si intenta escribir otro más no lo permita.

En el evento onkeypress() del input type text, mediante if(event.keyCode==32) puedo saber si se ha pulsado la barra espaciadora, pero no se cómo hacer para evitar que escriba más de un espacio...

Gracias de antemano
  #2 (permalink)  
Antiguo 03/10/2013, 18:14
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 9 meses
Puntos: 55
Respuesta: No permitir escribir más de un espacio

Hola, se me ocurre que puedes hacer una revision con una expresion regular.
string será el texto que tomas del input.

Código Javascript:
Ver original
  1. regexp=/\s\s/;
  2. RES=string.match(regexp);
  3. if(RES != null){alert('mal');}

Saludos
  #3 (permalink)  
Antiguo 03/10/2013, 18:42
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: No permitir escribir más de un espacio

Una opción es con keyup

<input type="text" id="texto" onkeyup="espacios(this);">

Código Javascript:
Ver original
  1. espacios=function(input){
  2.      input.value=input.value.replace('  ',' ');//sustituimos dos espacios seguidos por uno
  3. }

incluso se puede hacer en la misma definición del input para no llamar la funcion

<input type="text" id="texto" onkeyup="this.value=this.value.replace(' ',' ');">
  #4 (permalink)  
Antiguo 04/10/2013, 13:21
 
Fecha de Ingreso: julio-2013
Mensajes: 44
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: No permitir escribir más de un espacio

Gracias por vuestra ayuda.

Al final lo hago todo en el evento onkeypress(). Me explico. En la aplicación hay 3 input type text. El primero para la cantidad, el segundo es el concepto y el tercero el total. Se van introduciento conceptos y se van agregando como opciones a un select.

En el evento onkeyup() del input type text concepto, cada vez que suelto una tecla se ejecuta el método replace(). Está bien porque si introduzco dos espacios me quita uno, pero si dejo pulsada la barra espaciadora se escriben varios espacios. Además si quiero desplazarme hacia detrás o delante con las teclas de dirección el cursor siempre se queda al final debido a la asignación input.value=input.value.replace(' ',' '). Supongo que tendrá solución pero he optado por hacerlo todo en el onkeypress() del input type text total y ha quedado bien.

Código Javascript:
Ver original
  1. function enter()
  2.     {
  3.         // Si pulso la tecla Enter
  4.         if(event.keyCode==13)
  5.         {
  6.             if(cantidad.value=="" || concepto.value=="" || total.value=="")
  7.                 alert("Rellene los campos Cantidad, Concepto y Total");
  8.             // Si hay espacios al princio o al final o varios espacios seguidos
  9.             else if((concepto.value[0] == ' ' || concepto.value[concepto.value.length-1] == ' ') || concepto.value.match(/\s\s/))
  10.             {
  11.                 concepto.value = concepto.value.trim();
  12.                 while(concepto.value.match(/\s\s/)) concepto.value = concepto.value.replace('  ', ' ');
  13.                 añadir(); // Llamada a la función añadir()
  14.             }
  15.             else
  16.                 añadir(); // Llamada a la función añadir
  17.         }
  18.     }

Código HTML:
Ver original
  1. <input type=text name=cantidad id=cantidad size=1>
  2. <input type=text name=concepto id=concepto size=30 maxlength=27>
  3. <input type=text name=total id=total onkeypress=enter() size=2>

Muchas gracias a los dos!

Etiquetas: espacio, input, permitir
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 00:12.