Foros del Web » Programando para Internet » Javascript »

Formulario dentro del content de un php: No funciona bien la validación con .js

Estas en el tema de Formulario dentro del content de un php: No funciona bien la validación con .js en el foro de Javascript en Foros del Web. Tengo un formulario dentro de un archivo php, y al pulsar el botón que llama al .js no funciona bien, pues te carga la siguiente ...
  #1 (permalink)  
Antiguo 27/10/2012, 04:00
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta [B]Formulario que al llamar al archivo .js para hacer validaciones de campo falla [/B

Tengo un formulario dentro de un archivo php, y al pulsar el botón que llama al .js no funciona bien, pues te carga la siguiente página. Os explico un poco:

Tengo un formulario que al presionar el botón de manda a un archivo php.

Código HTML:
 <input type="button" value="RECIBIR PEDIDO POR MENSAJERIA" onclick="redondear(input_total_iva); 
confirmarFechas();document.getElementById('form1').action='prepago.php'; Validar2(form1);" /> 
En este archivo php se recogen los datos anteriores en oculto, y te pide nuevos datos a rellenar. Al final tiene un botón de continuar que manda a otro archivo php que tiene una parte de recordar todos los datos, mandar al TPV, mandar email al cliente... Mi problema es al enlazar el botón de continuar con un archivo .js para validar que se hayan rellenado los campos obligatorios. Aparece el cuadro de por favor rellene el nombre (por ejemplo) pero cuando le das a aceptar se carga la siguiente página...

Este es el código que tengo (lo pongo dentro de html para que salgan bien las partes del form, pero esta dentro de un php)


Código HTML:
<script src="validar-prueba.js" type="text/javascript">//</script>
<?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 bgcolor="#E9C2CD"><strong>Nombre y Apellidos*</strong></td>
     <td><span class="Estilo3">
       <input name="nombre" type="text" id="nombre" size="32" />
     </span></td>
     <td bgcolor="#E9C2CD"><strong>Empresa</strong></td>
     <td><input name="empresa" type="text" id="empresa" size="32" /></td>
   </tr>

   //QUITO ALGUNOS CAMPOS PARA NO ALARGAR CÓDIGO
		 
<input type="submit" name="enviar" id="enviar" value="Confirmar Pedido" onclick=" Validardatosmensajeria(form1);" />
	
    </table>
    

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

echo $content;

¿Alguien podría decirme cómo conseguir que funcione bien el .js y no se cargue la siguiente página hasta que no se hayan rellenado los datos bien?

MUCHAS GRACIAS

Pongo también el codigo del java scrip:


Código:
 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; }
}
  #2 (permalink)  
Antiguo 27/10/2012, 07:42
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

en estos caso es recomendable leer el abc de los furmularios
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 27/10/2012, 11:36
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

Cita:
Iniciado por IsaBelM Ver Mensaje
en estos caso es recomendable leer el[URL="http://www.caricatos.net/articulos/formularios.php"] abc de los furmularios[/URL]

Lo acabo de leer enterito y sigo sin saber cómo solucionar mi problema... esque en teoría debería funcionar, pero no... =S

He descubierto que si cambio el tipo de botón por button en vez de submit, ya funciona la validación, pero entonces no funciona el paso al siguiente archivo php... asique sigo sin saber cómo hacelro... =S

¿Alguien sabría qué pasa?
  #4 (permalink)  
Antiguo 27/10/2012, 16:07
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

Cita:
Iniciado por paty221 Ver Mensaje
Lo acabo de leer enterito y sigo sin saber cómo solucionar mi problema... esque en teoría debería funcionar, pero no... =S

He descubierto que si cambio el tipo de botón por button en vez de submit, ya funciona la validación, pero entonces no funciona el paso al siguiente archivo php... asique sigo sin saber cómo hacelro... =S

¿Alguien sabría qué pasa?
Estás cometiendo muchos errores, muy elementales algunos (y no todos ligados al uso de formularios, básicos de javascript más bien) , que te sugiero sigas lo indicado por @IsabelM, luego empezá por desarrollar ejemplo sencillos y no avances hasta tener éxito con los mismos.

a manera de ejemplo te cito
uso del evento onsubmit()
paso de variables a una función

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 28/10/2012, 13:07
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

Mira esto:

http://pastebin.com/d0N6E1Wj

Saludos
  #6 (permalink)  
Antiguo 30/10/2012, 05:21
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

Cita:
Iniciado por emprear Ver Mensaje
Estás cometiendo muchos errores, muy elementales algunos (y no todos ligados al uso de formularios, básicos de javascript más bien) , que te sugiero sigas lo indicado por @IsabelM, luego empezá por desarrollar ejemplo sencillos y no avances hasta tener éxito con los mismos.

a manera de ejemplo te cito
uso del evento onsubmit()
paso de variables a una función

Saludos
Si es que empece por un formulario sencillo y funcionaba todo bien. Ha sido al poner parte del formulario dentro del php al que se llama desde la otra página cuando me da fallos. Cuando estaba todo en la primera página funcionaba bien la validación....

¿Podrías orientarme en cuáles son los fallos que tengo? Esque como antes me funcionaba, y ahora no, nose que tengo mal... Porque el archivo js lo coge, porque sale el alert de nombre no bien introducido, lo que pasa es que cuando le das a aceptar no se queda en la página, sino que pasa a la siguiente...

Muchas gracias por vuestra ayuda
  #7 (permalink)  
Antiguo 30/10/2012, 05:56
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

Arranquemos con esto

Código HTML:
Ver original
  1. <input type="button" value="RECIBIR PEDIDO POR MENSAJERIA" onclick="redondear(input_total_iva);
  2. confirmarFechas();document.getElementById('form1').action='prepago.php'; Validar2(form1);" />

Que objeto cumple?
que representa input_total_iva?
Si el Action de tu form1 es pago.php, porque cambiarle el action a prepago.php?
que es form1? (no es lo mismo onclick="mifuncion(mielemento);" que onclick="mifuncion('mielemento');"
si tu función se llama Validardatosmensajeria(), de dónde sale validar2()?
datos anteriores en "oculto", no veo ningún campo hidden

Hacerle un onclick a un boton submit no va a evitar el procesamiento en caso de un error en la validación
Lee este post

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 30/10/2012, 07:00
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Respuesta: [B]Formulario que al llamar al archivo .js para hacer validaciones de camp

Cita:
Iniciado por emprear Ver Mensaje
Arranquemos con esto

Código HTML:
Ver original
  1. <input type="button" value="RECIBIR PEDIDO POR MENSAJERIA" onclick="redondear(input_total_iva);
  2. confirmarFechas();document.getElementById('form1').action='prepago.php'; Validar2(form1);" />

Que objeto cumple?
que representa input_total_iva?
Si el Action de tu form1 es pago.php, porque cambiarle el action a prepago.php?
que es form1? (no es lo mismo onclick="mifuncion(mielemento);" que onclick="mifuncion('mielemento');"
si tu función se llama Validardatosmensajeria(), de dónde sale validar2()?
datos anteriores en "oculto", no veo ningún campo hidden

Hacerle un onclick a un boton submit no va a evitar el procesamiento en caso de un error en la validación
Lee este [URL="http://www.forosdelweb.com/f13/forma-tratar-formularios-que-jamas-habia-visto-1019038/"]post [/URL]

Saludos
Emprear, gracias por intentar ayudarme! Te cuento, el trozo de código que me has pegado es de la primera página, que hace la llamada a prepago.php (por eso tiene ese action) y validar2. es como se llama la función que valida a ese form1(que es el nombre del formulario de esa página). (Esa parte funciona)

Donde se llama a pago.php y a la función validardatosmensajaria es dentro de prepago.php, perdón si a lo mejor no lo explique bien, puse ese código para explicar que lo que me da problemas está en un formulario al que se llega enviando datos desde otro - los datos que recojo en oculto no los copie en el codigo que puse para no llenarlo más de cosas)

El código de el botón en el formulario que me da problemas es:
Código HTML:
<input type="submit" name="enviar" id="enviar" value="Confirmar Pedido" onclick=" Validardatosmensajeria(form1);" /> 
y previamente en el form es donde tengo puesto que cuando le des vaya a pago.php en:

Código HTML:
<form id="form1" name="form1" method="post" action="pago.php "> 
Probe a poner el botón de tipo button y poner en action="pago.php" en el onclick= (como está hecho en botón del formulario que me funciona) pero entonces en este no funciona y no te manda a pago.php

Ya nose qué más probar porque no entiendo porque no funciona... ¿Qué fallos tengo en esta parte??

Muchisimas gracias!!
  #9 (permalink)  
Antiguo 04/11/2012, 05:09
 
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;
  #10 (permalink)  
Antiguo 04/11/2012, 06:21
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 3 meses
Puntos: 13
Respuesta: Formulario dentro del content de un php: No funciona bien la validación co

Prueba poner esto:

Código PHP:
<form id="form1" name="form1" method="post" action="pago.php " onSubmit="Validardatosmensajeria(document.getElementById('form1'))" 
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #11 (permalink)  
Antiguo 04/11/2012, 06:43
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Formulario dentro del content de un php: No funciona bien la validación co

Cita:
Iniciado por Bam_Margera Ver Mensaje
Prueba poner esto:

Código PHP:
<form id="form1" name="form1" method="post" action="pago.php " onSubmit="Validardatosmensajeria(document.getElementById('form1'))" 
Gracias por tu sugerencia. Poniendo el código tal y como me dices me sale error de programción por el ('form1'). He probado poniéndolo sin las ' y cambiandolas por ", que entonces si me sale bien, pero sigue sin funcionar...

Sigue pasando lo mismo, sale el cuadrito de validación de rellene el nombre, y cuando le das a aceptar carga la siguiente página en vez de quedarse en esa... =S
  #12 (permalink)  
Antiguo 04/11/2012, 07:22
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Formulario dentro del content de un php: No funciona bien la validación co

Podés dejar de repetir temas
http://www.forosdelweb.com/f13/formu...on-js-1021273/
http://www.forosdelweb.com/f18/probl...t-php-1021274/
http://www.forosdelweb.com/f13/b-for...lla-b-1020071/

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 04/11/2012, 08:44
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Formulario dentro del content de un php: No funciona bien la validación co

Cita:
Iniciado por emprear Ver Mensaje
Podés dejar de repetir temas
[url]http://www.forosdelweb.com/f13/formulario-dentro-del-content-php-no-funciona-bien-validacion-con-js-1021273/[/url]
[url]http://www.forosdelweb.com/f18/problemas-para-validar-formulario-dentro-content-php-1021274/[/url]
[url]http://www.forosdelweb.com/f13/b-formulario-que-llamar-archivo-js-para-hacer-validaciones-campo-falla-b-1020071/[/url]

Tienes razón, he puesto el tema varias veces porque lo puse hace bastantes días y no conseguí una solución al problema. Puede que fuese porque no me explicaba bien, de hecho, tu intentaste ayudarme pero me contestaste a otra cosa, hablandome de un código que no era el que fallaba, por eso he vuelto a poner la pregunta, explicándola mejor, para ver si así alguien podía ayudarme, porque llevo varios días intentando arreglarlo y no consigo dar con la solución. Y como no sabía en que apartado debía ir, porque nose qué falla, lo he puesto en en de php y en el js.

Perdón por repetir el tema, pero esque de verdad que ya no sé qué hacer para conseguir que funcione... ¿puedo borrar los anteriores de algún modo para qué no esten dos veces?

¿Ahora qué se entiende mejor cuál es el código falla, sabría alguien decirme porqué?

Muchas gracias
  #14 (permalink)  
Antiguo 04/11/2012, 10:02
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Formulario dentro del content de un php: No funciona bien la validación co

@paty221, me veo obligado a ser riguroso:

En este foro se colabora sin obligación alguna, si te responden bien, y si no, también.
Imaginate si para levantar o revivir un tema todos los "re-publicamos" 3 veces.

Pero eso no es todo, ya que te hemos respondido varios dándote las claves para resolver el problema. Es evidente que careces de conocimientos y solo estás intentando "que te salga", las cosas así, no funcionan. Html es un lenguaje de marcado, js y php, son lenguajes de programación, los tres tienen algo en común, para aprenderlos deben ser estudiados.

Veamos tu caso,
Estás imprimiendo html desde php, pero tu php no contiene variable alguna, asi que poner todo tu html dentro de $content y pposteriormente hacerle un echo al $content carece de sentido.
Tu html generado tiene muchos errores, cierre de etiquetas sin abrir, comillas sobrantes, una tabla mal estructurada, etc
Y tu javascript, que ahi esta el problema principal, ya te señalé en otro post, buscá info sobre el evento onsubmit y el uso de return para validar formularios, también te señalé que tenés que identificar correctamente los elementos del formulario. Te dejo esta script que NO funciona, tiene un error/omisión que he dejado exprofeso.
Releé las respuestas que ya te hemos dado

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. function Validardatosmensajeria(elForm){
  10. if (document.forms[elForm].elements['nombre'].value == ""){
  11. alert("Por favor ingrese su nombre.");
  12. document.forms[elForm].elements['nombre'].focus();
  13. return false;
  14. }
  15. }
  16. //]]>
  17. </head>
  18. <form id="form1" name="form1" method="post" action="pago.php" onsubmit="return Validardatosmensajeria(form1);">
  19.  <table>
  20.    <tr>
  21.      <td><strong>Nombre y Apellidos*</strong></td>
  22.      <td> <input name="nombre" type="text" id="nombre" size="32" /></td>
  23.      <td><strong>Empresa</strong></td>
  24.      <td><input name="empresa" type="text" id="empresa" size="32" /></td>
  25.    </tr>
  26.     </table>
  27.     <input type="submit" name="enviar" id="enviar" value="Confirmar Pedido" />
  28. </form>
  29. </body>
  30. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: falla, formulario, funcion, js, php, validació
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 22:35.