Foros del Web » Programando para Internet » Javascript »

Campo no obligatorio pero con restricción en los valores

Estas en el tema de Campo no obligatorio pero con restricción en los valores en el foro de Javascript en Foros del Web. Buenos días. Perdón por molestar con esta tontería, pero hoy me siento incapaz de sacar esto adelante... me he bloqueado :( Tengo un formulario en ...
  #1 (permalink)  
Antiguo 28/12/2005, 05:37
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Exclamación Campo no obligatorio pero con restricción en los valores

Buenos días.

Perdón por molestar con esta tontería, pero hoy me siento incapaz de sacar esto adelante... me he bloqueado :(

Tengo un formulario en el que compruebo sin problemas el nombre, los apellidos, y la dirección de correo. Todos estos campos son obligatorios y la comprobación funciona bien, pero también quiero dejar como opcional la introducción del número de móvil y es aquí donde me salen los problemas. No consigo poner que el campo sea opcional pero que sólo permita introducir números.
Además tengo 3 radio buttons que tampoco se como hacer para que sea obligatorio seleccionar uno. ¿Podría alguien ayudarme?

Muchas gracias a todos y feliz navidad

Os adjunto el código que he utilizado
Código PHP:
<html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Untitled Document</title>
<
script language="JavaScript">
<!--

function 
reponse(myoption) {
  var 
count myoption.length;
  for (var 
0counti++) {
    if (
myoption[i].checked == true) {
      return 
myoption[i].value;
    }
  }
  return 
"";
}

function 
IsNumeric(variable)
    {
    var 
reg = new RegExp("^[0-9 ]*$","g");
      if (!
reg.test(variable)) return false;
    else return 
true;
    }
    
function 
IsPlaintext(variable)
    {
    var 
reg = new RegExp("^[a-zA-Z ]*$","g");
      if (!
reg.test(variable)) return false;
    else return 
true;
    }    

function 
match(expressionvalue) {
    return 
expression.test(value);
}

function 
IsTelephone(value) {
    return 
match(/^[0-9]{9}$/, value);
}


/////////////////////////////////          
//    FUNCION VALIDACION       //
/////////////////////////////////          

function validation(formWC)  {
          if (
formWC.NOMBRE.value == "")    {
               
alert ("Debe rellenar el apartado relativo al Nombre");
               
formWC.NOMBRE.focus();
               return 
false;
          }
          if(!(
IsPlaintext(formWC.NOMBRE.value)))
          {
               
alert ("No ha rellenado correctamente los datos relativos a su Nombre. Introduzca únicamente letras.");
               
formWC.NOMBRE.focus();
               return 
false;
          }          
          if (
formWC.APELLIDOS.value == "")    {
               
alert ("Debe rellenar el apartado relativo al apellido");
               
formWC.APELLIDOS.focus();
               return 
false;
          }
          if(!(
IsPlaintext(formWC.APELLIDOS.value)))
          {
               
alert ("No ha rellenado correctamente los datos relativos a su Apellido. Introduzca únicamente letras.");
               
formWC.APELLIDOS.focus();
               return 
false;
          }            
          if (
formWC.EMAIL.value == "")   {
               
alert ("Debe rellenar el campo relativo al E-mail");
               
formWC.EMAIL.focus();
               return 
false;
          }
          
//comprobar el valor del e-mail
            
var reg = new    RegExp("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,3}$");
            if (!
reg.test(formWC.EMAIL.value)) {
                   
formWC.EMAIL.focus();
                   
alert("La dirección de E-mail que Vd ha introducido no es válida");
                   return 
false;
            }                                                     
          if(!(
IsTelephone(formWC.MOVIL.value)))  {
               
alert ("No ha rellenado correctamente los datos relativos a su teléfono. Introduzca únicamente las cifras, sin espacios ni separaciones");
               
formWC.MOVIL.focus();
               return 
false;
          }                                

          return 
true;



//-->
</script>

</head>

<body>
<form action="#" name="formWC" method="POST" enctype="" onsubmit="return validation(document.forms[0])">

<p>NOMBRE 
  <label>
  <input name="NOMBRE" type="text" id="NOMBRE" />
  </label>

<p>APELLIDOS
  <input name="APELLIDOS" type="text" id="APELLIDOS" />
</p>
<p>EMAIL
  <input name="EMAIL" type="text" id="EMAIL" />
</p>
<p>MOVIL
  <input name="MOVIL" type="text" id="MOVIL" />
</p>
<p>
  <label>
  <input name="PRODUCTO" type="radio" value="1" />
1</label>
  <label>
  <input name="PRODUCTO" type="radio" value="2" />
2</label>
  <label>
  <input name="PRODUCTO" type="radio" value="3" />
3</label>
</p>
<p>
  <input name="Submit" type="submit" value="Submit" />
</p>
</form>
</body>

</html> 
  #2 (permalink)  
Antiguo 28/12/2005, 05:49
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Moloko1508

He modificado un poco tu código:
Código PHP:
          if(isNaN(formWC.MOVIL.value) || formWC.MOVIL.value.length<9)  {
               
alert ("No ha rellenado correctamente los datos relativos a su teléfono. Introduzca únicamente las cifras, sin espacios ni separaciones");
               
formWC.MOVIL.focus();
               return 
false;
          } 
          
          
num=0;
          for (
i=0;rad=formWC.PRODUCTO[i];i++)
            if (
rad.checkednum++;
          if (
num==0) {
            
alert('Marca un radio');
            return 
false;
          }
                                         

          return 
true
Espero que te sirva. Saludos,
  #3 (permalink)  
Antiguo 28/12/2005, 06:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Muchiiiiiiiisimas gracias JavierB.

Ahora ya me funciona perfectamente lo de los radio Buttons, pero el campo del móvil, que debería ser opcional sigue pidiéndomelo como obligatorio.

La validación de los datos del campo para que sean sólo números la hace bien, pero sigue exigiéndome que ponga un valor y yo quiero que el campo pueda quedar vacío. No se si es posible.

Por otro lado, sería posible que comprobara si el número introducido empieza por 6?? de esta forma el número de teléfono móvil sería más fiable.

Muchas muchas muchas gracias
  #4 (permalink)  
Antiguo 28/12/2005, 06:33
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Más cambios:
Código PHP:
          if(!(IsTelephone(formWC.MOVIL.value)))  {
               
alert ("No ha rellenado correctamente los datos relativos a su teléfono. Introduzca únicamente las cifras, sin espacios ni separaciones");
               
formWC.MOVIL.focus();
               return 
false;
          } 
Código PHP:
function IsTelephone(value) {
    if (
value.length>&& value.charAt(0)!='6') return false;
    return 
match(/^[0-9]{0,9}$/, value);

Saludos,
  #5 (permalink)  
Antiguo 28/12/2005, 06:53
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Me quito el sombrero.
Muchas muchas muchas gracias.
Me acabas de salvar el día.
Te debo unas birritas. Ya me funciona todo perfectamente.
Saludos y que pases una Feliz Navidad !!!!
  #6 (permalink)  
Antiguo 28/12/2005, 07:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Perdona, sólo una cosita más....
Como debería modificar la funcion IsTelephone para que me permitiese introducir tanto números que empiecen por 6 como por 9??? Así podría usar esta misma función para el campo del móvil y el fijo.
Muchas gracias de nuevo
  #7 (permalink)  
Antiguo 28/12/2005, 07:46
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Rehola.

Acepto lo de las birras, pero antes te contesto porque si te contesto después...

Esto no lo he probado, pero debería funcionar:

if(!(IsTelephone(formWC.MOVIL.value,'6'))) {
Código PHP:
function IsTelephone(value,num) {
    if (
value.length>&& value.charAt(0) != num) return false;
    return 
match(/^[0-9]{0,9}$/, value);

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.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:09.