Ver Mensaje Individual
  #9 (permalink)  
Antiguo 04/11/2012, 05:09
paty221
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Formulario dentro del content de un php: No funciona bien la validación con .js

Tengo un formulario dentro del content= de un php (prepago.php) al que se llega desde otro formulario principal. La idea es dividir el formulario para que se realice en dos pasos (lo he dividido de este modo porque en el formulario anterior hay dos botones, cada uno lleva a un procedimiento diferente que continua en diferentes archivos php) En este caso se quiere que vaya a pago.php donde se manda la información a un TPV y por email al cliente.

Mi problema es que dentro de este formulario de prepago.php, que recoge datos anteriores y manda unos nuevos, no funciona bien la función de validar, y no entiendo porqué. Al pulsar el botón de Confirmar Pedido se llama a la función Validardatosmensajeria para validar que se hayan rellenado los campos obligatorios, y lo que está fallando es que aparece el cuadro de java scrip de "por favor rellene el nombre" (por ejemplo) pero cuando le das a aceptar, en vez de mantenerse en esa página, se carga la siguiente página (pago.php)

El código que tengo en el botón es este:
Código HTML:
<input type="submit" name="enviar" id="enviar" value="Confirmar Pedido" onclick=" Validardatosmensajeria(form1);" /> 
y el que abre el formulario, que es donde está la llamada a pago.php este:

Código HTML:
<form id="form1" name="form1" method="post" action="pago.php "> 
Así lo que pasa, como ya he señalado, es que tras la validación no se mantiene en la misma página sino que pasa a la siguiente aunque salte el aviso. He probado a cambiar el botón por un button y poner ahí el action a pago.php del siguiente modo, pero entonces funciona bien la validación, se mantiene en la página, pero no da luego el paso a la siguiente (pago.php)

Código HTML:
<input type="button" name="enviar" id="enviar" value="Confirmar Pedido" onclick=" Validardatosmensajeria(form1); action='pago.php'; " /> 
El código que tengo para validar es este, que esta dentro de un .js al que se llama al principio de la página.
(Este código lo tenía antes para validar el formulario cuando lo datos estaban en el formulario de la página anterio y funcionaba bien)

Código HTML:
 function Validardatosmensajeria(form)

{
if (form.nombre.value == "") 

{ alert("Por favor ingrese su nombre."); form.nombre.focus(); return; }


if (form.telefono.value == "")

{ alert("Por favor ingrese su número de teléfono."); form.telefono.focus(); return; }

valor = document.getElementById("telefono").value;
if( !(/^\d{9}$/.test(valor)) ) {
   alert("Por favor ingrese un número de teléfono válido, 9 dígitos sin espacios"); form.telefono.focus(); return; }

if (form.email.value == "")

{ alert("Por favor ingrese su dirección de E-mail."); form.email.focus(); return; }


if (form.email.value.indexOf('@', 0) == -1 ||

form.email.value.indexOf('.', 0) == -1)

{ alert("Dirección de e-mail inválida, por favor, ingresa una correcta."); form.email.focus(); return; }

if (form.verif.checked==false)

{ alert("Tienes que aceptar las condiciones generales de contratación."); form.verif.focus(); return; }
}

¿Alguien sabe cómo podría conseguir que funcione bien la validación? ¿Qué es lo que está fallando ahora? He probado ya todo lo que se me ocurre y nada... Lo agradecería muchisimo, porque llevo varios días atascada con esto =S

Os dejo el código completo de prepago.php por si os aporta más información necesaria para resolver mi problema.

MUCHAS GRACIAS

Código HTML:
<script src="validar-prueba.js" type="text/javascript">//</script>
// Llamo al js donde está la función Validardatosmensajeria
<?php

$content='

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<link href="diseno.css" rel="stylesheet" type="text/css" />

</head>

// QUITO PARTE DE LA PÁGINA QUE NO ES NECESARIA PARA ESTE CASO

    <div id="contenido">

<form id="form1" name="form1" method="post" action="pago.php ">

 
 <table>
   <tr>
     <td"><strong>Nombre y Apellidos*</strong></td>
     <td> <input name="nombre" type="text" id="nombre" size="32" />
     </span></td>

     <td><strong>Empresa</strong></td>
     <td><input name="empresa" type="text" id="empresa" size="32" /></td>
   </tr>

   //QUITO ALGUNOS CAMPOS PARA NO ALARGAR CÓDIGO, Serían más como los anteriores...
		 
<input type="submit" name="enviar" id="enviar" value="Confirmar Pedido" onclick=" Validardatosmensajeria(form1);" />
	
    </table>

  // QUITO CAMPOS EN OCULTO QUE TENÍA PARA RECOGER DATOS DEL FORMULARIO ANTERIOR Y MANDARLOS AL SIGUIENTE PHP
    

</form> 
</body>
</html>
';

echo $content;