Foros del Web » Programando para Internet » Javascript »

Controlas campo de formulario con espacio en blanco

Estas en el tema de Controlas campo de formulario con espacio en blanco en el foro de Javascript en Foros del Web. Tengo un formulario en el que si se dejan campos en blanco no deja enviarlo ya que son campos obligatorios. Pero si una persona teclea ...
  #1 (permalink)  
Antiguo 29/09/2009, 07:43
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Controlas campo de formulario con espacio en blanco

Tengo un formulario en el que si se dejan campos en blanco no deja enviarlo ya que son campos obligatorios.

Pero si una persona teclea un espacio en blanco sí deja enviarlo.

¿Como puedo controlar esto?
  #2 (permalink)  
Antiguo 29/09/2009, 08:09
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: Controlas campo de formulario con espacio en blanco

utiliza expresion regular para determinar que existen carateres validos. por ejemplo, podrias utilizar /\S/.test(valor_campo). la expresion busca por otros caracteres que no sea caracteres en blanco como espacio, tabular, retorno de carro, entre otros. si devuelve true significa que tiene caracteres validos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 29/09/2009, 08:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Controlas campo de formulario con espacio en blanco

Hola

No existe la función Trim en javascript, como la conocemos en ASP. Revisa este articulo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 29/09/2009, 09:46
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Respuesta: Controlas campo de formulario con espacio en blanco

zerokilled no consigo que me funcione.

Si mi caja de texto es "nombre", como tendría que hacerlo?

Os pongo el formulario con una caja de texto de ejemplo:

Código:
<html>
<head>
        <script type="text/javascript">
<!--
function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- El '+nm+' debe de ser válido.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- El campo '+nm+' es obligatorio.\n'; }
    } if (errors) alert('Ha ocurrido el siguiente error: \n\n'+errors);
    document.MM_returnValue = (errors == '');
} }
//-->
    </script> 
</head>

<body>
<form action="tratar-enviar-contactar.aspx" method="post">
    <table width="550" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>     
<td width="82" height="21">(*) Nombre:</td>
        <td width="182" height="30"><input type="text" name="nombre" id="nombre" /></td>
</tr>

<tr>
        <td align="center"><input name="button" type="submit" id="button" onclick="MM_validateForm('nombre');return document.MM_returnValue" value="Enviar" /></td>
      </tr>
      
    </table>
    </form>
</body>
</html>
  #5 (permalink)  
Antiguo 29/09/2009, 12:46
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Controlas campo de formulario con espacio en blanco

Hola

Mira este ejemplo

Código javascript:
Ver original
  1. <html>
  2. <head>
  3.         <script type="text/javascript">
  4. <!--
  5. function validateForm(elem) {
  6. var val_campo = document.getElementById(elem).value;
  7. var patron=new RegExp(/^\s+|\s+$/);
  8. alert(patron.test(val_campo));
  9. if (patron.test(val_campo) == true) {
  10. alert("La cadena no es correcta")
  11. } else {
  12. alert("La cadena es correcta")
  13. }
  14. }
  15. //-->
  16.     </script>
  17. </head>
  18.  
  19. <body>
  20. <form action="tratar-enviar-contactar.aspx" method="post">
  21.     <table width="550" border="0" align="center" cellpadding="0" cellspacing="0">
  22. <tr>    
  23. <td width="82" height="21">(*) Nombre:</td>
  24.         <td width="182" height="30"><input type="text" name="nombre" id="nombre" /></td>
  25. </tr>
  26.  
  27. <tr>
  28.         <td align="center"><input name="button" type="submit" id="button" onclick="validateForm('nombre');return false" value="Enviar" /></td>
  29.       </tr>
  30.      
  31.     </table>
  32.     </form>
  33. </body>
  34. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 30/09/2009, 01:08
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Respuesta: Controlas campo de formulario con espacio en blanco

¿Como podria fusionar esa funcion con esta Siendo la llamada a al funcion la que os he indicado arriba?:

Código:
 <script type="text/javascript">
<!--
function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- El '+nm+' debe de ser válido.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- El campo '+nm+' es obligatorio.\n'; }
    } if (errors) alert('Ha ocurrido el siguiente error: \n\n'+errors);
    document.MM_returnValue = (errors == '');
} }
//-->
    </script>
  #7 (permalink)  
Antiguo 30/09/2009, 01:56
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: Controlas campo de formulario con espacio en blanco

disculpame pero soy reacio a los codigos de macromedia. no se si tengas una razon para justificar el uso especifico de esa funcion. en todo caso, ¿comprobastes el ejemplo de Adler? es mas que sencillo y menos complejo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 30/09/2009, 02:18
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Controlas campo de formulario con espacio en blanco

Hola Laika,

Yo utilizo una función tal que así:

-------------------------
function strBlanco(str)
{
var numCaracStr = str.length;
var espacios = str.split(" ");
var numEspacios = espacios.length - 1;
if(numEspacios == numCaracStr)
{
return false;
}
else
{
return true;
}
}
----------------------------
Hago un split por espacios de la cadena y si el array tiene tantas posiciones como longitud de texto (length) es que estoy pasando una cadena de espacios. Al llamar a esta función con la cadena como parámetro te devuelve un true si no es una cadena de espacios y false si lo es.

Salu2
  #9 (permalink)  
Antiguo 30/09/2009, 03:27
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Respuesta: Controlas campo de formulario con espacio en blanco

Si, el ejemplo de Adler me fucnoina pero ahora por ejemplo como hago para que el campo nombre sea obligatorio?
  #10 (permalink)  
Antiguo 30/09/2009, 05:14
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Controlas campo de formulario con espacio en blanco

Hola

Solo has de hacer algunas modificaciones

Código javascript:
Ver original
  1. function validateForm(elem) {
  2. var val_campo = document.getElementById(elem).value;
  3. var patron=new RegExp(/^\s+|\s+$/);
  4. if(val_campo == "") {
  5. alert("El campo no puede estar vacio")
  6. return (false);
  7. }
  8. else if (patron.test(val_campo)) {
  9. alert("La cadena no es correcta")
  10. return (false);
  11. }
  12. else
  13. {
  14. return (true);
  15. }
  16. }

Código html:
Ver original
  1. td align="center"><input name="button" type="submit" id="button" onclick=" return validateForm('nombre');" value="Enviar" /></td>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 30/09/2009, 06:00
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Respuesta: Controlas campo de formulario con espacio en blanco

Gracias y para que me saque el error por cada uno de los campos que esta vacios?

Deberia de salirme un alert con los distintos errores que puede haber.

Me gustaría también:
  • Que me diga el campo sobre el que se ha producido el error
  • que se verifique si es un email valido. Por el tema de que tenga @
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:25.