Retroceder   Foros del Web > Programación para sitios web > Javascript

Respuesta
 
Herramientas Desplegado
Antiguo 08-sep-2008, 09:37   #1 (permalink)
kitty14 ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2007
Mensajes: 70
Pregunta validar campos

Hola a todos:

Espero que alguien me pueda ayudar en mi problema. Tengo un formulario muy simple para enviar y antes de enviar estoy intentando validar los campos, hago lo siguiente:

*****************************
<title>Enviando Correos</title>
<script src="/prototype.js" type="text/javascript"></script>
<script type="text/javascript">

function envio(){
new Ajax.Updater('apartado','correo.jsp',{
parameters: $('fPedido').serialize(true)});
}

function validar(fPedido){

var er_email = /^(.+\@.+\..+)$/
var er_telfono = /^[0-9]{9}$/

if (fPedido.sNombre.value.trim()=="") {
alert('Nombre no valido');
fPedido.sNombre.focus();
return (false);
}

if (fPedido.sTelefono.value=="") {
alert("El campo \"Tel�fono\" est� vac�o.");
fPedido.sTelefono.focus();
return (false);
}else{
if(!er_telfono.test(fPedido.sTelefono.value)){
alert('Campo Tel�fono no v�lido.');
fPedido.sTelefono.focus();
return (false) //no submit
}
}
if (fPedido.sEmail.value=="") {
alert("El campo \"E-mail\" est� vacio.");
fPedido.sEmail.focus();
return (false);
}else{
if(!er_email.test(fPedido.sEmail.value)){
alert('Campo E-mail no valido.')
fPedido.sEmail.focus();
return (false);
}
}

if (fPedido.sDireccion.value.trim()=="") {
alert('El campo \"Direccion\" est vacio');
fPedido.sDireccion.focus();
return (false);
}
if (fPedido.sCiudad.value.trim()=="") {
alert('El campo \"Ciudad\" est vacio');
fPedido.sCiudad.focus();
return (false);
}
if (fPedido.pProvincia.value.trim()=="") {
alert('El campo \"Provincia\" est vacio');
fPedido.pProvincia.focus();
return (false);
}
if (fPedido.nCp.value.trim()=="") {
alert('El campo \"Codigo Postal\" est vacio');
fPedido.nCp.focus();
return (false);
}
if (fPedido.datos.checked==false ){
alert('Para enviar tus datos tienes que haceptar las condiciones de proteccion de datos');
return(false);
}
if (fPedido.producto.checked==false ){
alert('Para realizar un pedido debe de seleccionar algun producto');
return(false);
}

}

String.prototype.trim= function() {//Agrega la funci�n trim al objeto String
return this.replace(/(^\s*)|(\s*$)/g,""); //elimina espacios a izquierda y derecha
}

function activarCantidad(Prod,Cantidad){

if (Prod.checked==true )
{
Cantidad.disabled=false ;
}
else
{
Cantidad.disabled=true;
Cantidad.value="";
}

}
</script>
</head>
<body>

<form id="fPedido" name="fPedido" class="formu" onSubmit="return validar(this)">
<label>*Nombre y apellidos <input class="ecBordeCaja" type="text" name="sNombre" size=30/></label><br><br>
<label>*Direccion <input class="ecBordeCaja" type="text" name="sDireccion" size=30/></label><br><br>
<label>*C.P. <input class="ecBordeCaja" type="text" name="nCp" size=5 maxlength=5/></label><br><br>
<label>*Ciudad <input class="ecBordeCaja" type="text" name="sCiudad"/></label><br><br>
<label>*Provincia <input class="ecBordeCaja" type="text" name="pProvincia"/></label><br><br>
<label>*Email <input class="ecBordeCaja" type="text" name="sEmail"/></label><br><br>
<label>*Telefono <input class="ecBordeCaja" type="text" name="sTelefono"/></label><br><br>
<label>Comentario sobre el pedido</label><br><textArea class="ecBordeCaja" name="sComentario" rows="5" cols="40"/></textarea><br><br>
<br>
<div class="ecRelleno"></div>
<div><input name="datos" value="3" type="checkbox"/> Proteccion de datos</div><br/><br/>
<div class="ecRelleno"></div>
<input type="button" name="enviar" value="Enviar" onClick="enviar()">
</form>

<div id="apartado" class="ecAaprtado"></div>

</body>
</html>
***********************************************

La cosa es que el formulario se envia pero sin validarse los campos, es decir, que a la funcion "enviar" que esta puesta en el onClick del boton hace caso, pero al del formulario no. Este mismo "validar" lo hago en otra pagian web y me va perfectamente. Alguien puede echarle un vistazo y decirme si encuentra algun fallo??

Muchas gracias de antemano.
kitty14 está desconectado   Responder Citando
Antiguo 08-sep-2008, 17:24   #2 (permalink)
ragodel ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2008
Ubicación: Cartagena
Mensajes: 2
Respuesta: validar campos

bueno hacer las validaciones en un formulario...no es algo muy complicado, pero mirare tu codigo para ver entender que es lo que quieres hacer realmente
ragodel está desconectado   Responder Citando
Antiguo 08-sep-2008, 18:16   #3 (permalink)
ragodel ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2008
Ubicación: Cartagena
Mensajes: 2
Respuesta: validar campos

hice estos cambios:

<form id="fPedido" name="fPedido" class="formu" onSubmit="return validar(this)" action="correo.jsp">, agregue la parte que esta en verde

y en el boton enviar :
<input type="button" name="enviar" value="Enviar" onClick="enviar()">, quite la parte que esta en rojo..si no estoy mal la idea es enviar los datos y despues de la validacion todo esta OK. pues de esta forma pasas a la pagina de correo.jsp...claro que dejo por fuera una parte de ajax que tienes...que la verdad no comprendo que quieres hacer son ella...en fin espero sea lo que buscabas.

saludos.
ragodel está desconectado   Responder Citando
Antiguo 08-sep-2008, 22:52   #4 (permalink)
jseros tiene algunos puntos positivos de karma
 
Avatar de jseros
 
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 154
Enviar un mensaje por MSN a jseros
Respuesta: validar campos

Hola kitty14. Lo que puedes hacer es lo siguiente, cambia el tipo del botón de button a submit. Es lo correcto, para eso se hicieron esos botones:

Código:
if( window.onload )
  var onlfunc = window.onload;
else
  var onlfunc = function(){};

window.onload = function(){
    onlfunc();
    document.getElementById( "fPedido" ).onsubmit = function(){
         return envio( this );
    };
};

function envio( form2send )
{
   //verifica primero si estan completos los campos y si no es así muestra la alerta
   if( validar( form2send )  )
  {
       new Ajax.Updater('apartado',  form2send.action  ,{
       parameters: $( form2send ).serialize(true)});
  }
  return false;
}
HTML

Código HTML:
<form id="fPedido" name="fPedido" class="formu" action="correo.jsp">

<input type="submit" name="enviar" value="Enviar">
Aunque deberias dar una opción a las personas que usan un navegador que no soportan javascript total a parcialmente creando una validación en el servidor...

Te explicaré el código:

Código:
if( window.onload )
  var onlfunc = window.onload;
else
  var onlfunc = function(){};
Verifico si se va a ejecutar algo con el evento onload, si es así lo guarda en la variable onlfunc como si fuera una función, pero si no almacena en esa misma variable una función vacía.

Código:
window.onload = function(){
    onlfunc();
    document.getElementById( "fPedido" ).onsubmit = function(){
         return envio( this );
    };
};
En el evento onload guardo una función que ejecute lo que esté almacenado en la variable onlfunc, que puede ser una función vacía o no y accedo al formulario programandole el evento onsubmit que devuelve el resultado de la función envio.

Código:
function envio( form2send )
{
   //verifica primero si estan completos los campos y si no es así muestra la alerta
   if( validar( form2send )  )
  {
       new Ajax.Updater('apartado',  form2send.action  ,{
       parameters: $( form2send ).serialize(true)});
  }
  return false;
}
En la función envio recibo como parametro el formulario y verifico su integridad con la función validar(simpre cancela el evento). como puedes ver accedo a el archivo mediante la propiedad action par que no sea algo invasivo.

Espero que el código no sea dificil de entender y que te funcione como esperas. Sino, igual aquí estamos para colaborarte...quedo pendiente y un saludo!!
jseros está desconectado   Responder Citando
Antiguo 09-sep-2008, 02:51   #5 (permalink)
kitty14 ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2007
Mensajes: 70
Respuesta: validar campos

Gracias por contestar a todos. He puesto el submit y luego he quitado el onClick del botton y le he puesto en el action del formulario para que fuese a la otra página. El metodo de ajax lo que hace es ir a la otra pagina y deja el resultado en la del principio, esta muy bien Ajax.

Salu2!!!
kitty14 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 10:17.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96