Foros del Web » Programando para Internet » Javascript »

validar formulario sin onsubmit

Estas en el tema de validar formulario sin onsubmit en el foro de Javascript en Foros del Web. Hola, tengo la siguiente funcion para validar un formulario... lo q me gustaria es q esa funcion comprobara los campos de mi formulario, y en ...
  #1 (permalink)  
Antiguo 26/06/2006, 09:34
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
validar formulario sin onsubmit

Hola,
tengo la siguiente funcion para validar un formulario...
lo q me gustaria es q esa funcion comprobara los campos de mi formulario, y en caso de dsipararse alguna condicion se saliera de la funcion, lo he probado de la siguiente manera pero no me funciona.
Código HTML:
function validatraspas(miform){

	var data = miform.dc.value;
	var article = miform.article.value;
	var magatzemorigen = miform.magatzemorigen.value;
	var magatzemdesti = miform.magatzemdesti.value;
	var quantitat = miform.quantitat.value;
	
	if (data==''){
		alert("Tienes que escojer una Fecha.");
		break;
	}else if (article==0){
		alert("Tienes que escojer un tipo de caja.");
		break;
	}else if (magatzemorigen==0){
		alert("Tienes que escojer un Almacen Origen.");
		break;
	}else if (magatzemdesti==0){
		alert("Tienes que escojer un Almacen Destino.");
		break;
	}else if (quantitat==0){
		alert("Tienes que definir una cantidad.");
		break;
	}else if (magatzemorigen == magatzemdesti){
		alert("No puedes escojer el mismo almacen.");
		break;
	}else {
		myajax.Form('miform', 'main');
	}

}
y el formulario el siguiente:
Código HTML:
<form id="miform" method="post" action="traspas/act_ins.php">
<DIV id=popCal style="BORDER-RIGHT: 2px ridge; BORDER-TOP: 2px ridge; Z-INDEX: 100; VISIBILITY: hidden; BORDER-LEFT: 2px ridge; WIDTH: 10px; BORDER-BOTTOM: 2px ridge; POSITION: absolute" 
onclick=event.cancelBubble=true><IFRAME name=popFrame 
 src="calendario/calendari.php"
frameBorder=0 width=183 scrolling=no height=188></IFRAME></DIV>
<SCRIPT event=onclick() 
for=document>popCal.style.visibility = "hidden";</SCRIPT>
<table align="center"  border="1">
<tr><td width="70%">
<table align="center">
<tr><td align="center" class="titol" colspan="2">Traspasos</td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr>
	<td class="lletra">&nbsp;Fecha</td>
	<td><INPUT class="caixes" readOnly name="dc" size="20">&nbsp;<img src="img/calendari.gif" width="20" onclick="popFrame.fPopCalendar(dc,dc,popCal);return false"></td>
</tr>
<tr>
	<td class="lletra">&nbsp;Tipo de Caja</td>
	<td>
		<select name="article" class="caixes" onchange="myajax.Link('traspas/cons_stock.php?article='+this.value, 'stock_actual')">
			<option value="0">Tipo de caja...</option>
			<?
			while($res_article=mysql_fetch_row($sql_article)){
				echo "<option value=".$res_article[0].">".$res_article[1]."</option>";
			}
			?>
		</select>
	</td>
</tr>
<tr>
	<td class="lletra">&nbsp;Almacen Origen</td>
	<td>
		<select name="magatzemorigen" class="caixes">
			<option value="0">Almacen Origen...</option>
			<?
			while($res_magatzem=mysql_fetch_row($sql_magatzem)){
				echo "<option value=".$res_magatzem[0].">".$res_magatzem[1]."</option>";
			}
			?>
		</select>
	</td>
</tr>
<tr>
	<td class="lletra">&nbsp;Almacen Destino</td>
	<td>
		<select name="magatzemdesti" class="caixes">
			<option value="0">Almacen Destino...</option>
			<?
			while($res_magatzem2=mysql_fetch_row($sql_magatzem2)){
				echo "<option value=".$res_magatzem2[0].">".$res_magatzem2[1]."</option>";
			}
			?>
		</select>
	</td>
</tr>
<tr>
	<td class="lletra">&nbsp;Cantidad</td>
	<td><input type="text" name="quantitat" class="caixes" align="right"/></td>

</tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td align="right">
<input type="submit" class="boto" name="envia" value="Grabar" onClick="javascript:validatraspas(this.form)">
</td>
<td align="left">
<input type="button" class="boto" name="cancelar"  value="Cancelar" onclick="myajax.Link('#traspas/default.php', 'main')">
</td>
</tr>
</table>
</td>
<td width="30%">
<table>
<tr><td width="30%" align="center" valign="middle"><div id="stock_actual" align="center"></div></td></tr>	
</table>
</td>
</tr>
</table>
</form> 
Gracias por cualquier solucion q puedan ofrecerme...

Saludos
supongo q debe ser el break; porque si lo quito me van saliendo los alerts pero no sale nunca de la funcion y da por buneo el formulario.
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 26/06/2006, 10:06
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 2 meses
Puntos: 4
probá cambianto el término "break" por "return false".

saludos
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 26/06/2006, 10:08
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
no! tampoco me funciona... me van saliendo los alerts y al final me carga la pagina...
alguna solucion?

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 26/06/2006, 11:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Hola:

La validación debe hacerse con onsubmit... y parece que lo intentas, pero debe ser en el tag form y la validación hay que hacerla con return...

<form onsubmit="return validar(this)" ...>

Y la función de validación debe devolver true/false (false cancela el submit)... Fíjate en la respuesta de capi (¡hola !)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 27/06/2006, 00:16
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
buenos dias,
antetodo gracias por vuestras respuestas.

Yo normalmente uso el tag de onsubmit del form para validar el formulario, pero esta vez estaba usando AJAX, y exactamente estaba usando la clase q creo NZO -->isiAJAX
aqui teneis el post donde empezaron mis dudas para la validacion.

Al final Nzo me dio con la solucion.

Gracias,

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #6 (permalink)  
Antiguo 27/06/2006, 01:01
 
Fecha de Ingreso: febrero-2004
Mensajes: 30
Antigüedad: 20 años, 10 meses
Puntos: 0
Yo tenia el mismo problema. No he utilizado ajax. Lo que pasa es que los botones(<input...) cuando los apretan activan el action del formulario por más onclicks y cosas de estas que le pongas. Lo que hice fue sustituir el <input... por un link (<a href...) metiéndole un botón para que quedase mas bonito. Te pongo exactamente lo que puse:
<a href="javascript:validatraspas()"><img border="0" name="altaclient" src="C:\iconos\botonaltas.png"></a>
Luego, dentro de tu función, pones un document.miform.submit() en el caso de que todos los campos se hayan rellenado correctamente.
Por cierto!!si te vuelve a dar algún error prueba de cambiar las comillas simples por dobles. (if (data==""){).
Espero que te sirva!!Un saludo,
Tricky
  #7 (permalink)  
Antiguo 27/06/2006, 11:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Cita:
Iniciado por Tricky
... Lo que pasa es que los botones(<input...) cuando los apretan activan el action del formulario por más onclicks y cosas de estas que le pongas...
Mal: Hay botones tipo submit, reset o submit (usando el tag button), y el resto de tipos de entrada (usando el tag input) no envían nada.
Con los tipos reset y button jamás se enviará, y con el tipo submit y en el tag form una validación hecha correctamente tampoco se hará el submit si no se pasa la validación...

Cita:
Iniciado por Tricky
... Lo que hice fue sustituir el <input... por un link (<a href...) metiéndole un botón para que quedase mas bonito. Te pongo exactamente lo que puse:
<a href="javascript:validatraspas()"><img border="0" name="altaclient" src="C:\iconos\botonaltas.png"></a>
Luego, dentro de tu función, pones un document.miform.submit() en el caso de que todos los campos se hayan rellenado correctamente...
Fatal: Usemos las etiquetas adecuadamente... Una etiqueta a tiene un valor semántico y es enlazar y No para ejecutar un script... en tal caso vale cualquier etiqueta pero mejor es un botón... de todos modos si la razon de usar esa etiqueta es por mostrar la manita, se puede conseguir con estilos...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 28/06/2006, 00:17
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
buenos dias,
si esa opcion no es correcta, como quedaria la cosa?
es q si lo pongo en el tag del form la cosa no anda.

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 28/06/2006, 00:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Hola:

Una solución sencilla, es usar una variable con el valor lógico de la validación y al final devlverla:

var estado = true;
if (data=='') {
alert("Tienes que escojer una Fecha.");
estado = false;
}
//...
return estado;

Y la llamada:
<form onsubmit="return valida(this)"...

Fíjate que tanto la función como el evento deben tener return algo y ese algo debe ser false para "NO" pasar la validación...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 28/06/2006, 04:23
 
Fecha de Ingreso: febrero-2004
Mensajes: 30
Antigüedad: 20 años, 10 meses
Puntos: 0
gracias

Merci por la corrección Caricatos!! Es que cuando yo lo tuve que hacer me encontré muchos problemas con los tags input y button. Porque como necesitaba hacer los botones con determinadas imágenes, el tag input tenía que ponerle de type="image" y con ese tipo si que se activa el action y con el tag button, funcionaba pero la imagen de mi botón tenia alrededor un fondo gris que quedaba muy cutre. Y es por todo esto que llegue a esa conclusión que, aunque incorrecta, funciona perfectamente. Aunque lo de <form onsubmit="return valida(this)"... me hubiera ido de perlas en su momento.
Gracias!!Un saludo,

Tricky
  #11 (permalink)  
Antiguo 17/07/2006, 04:39
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
Hola de nuevo...
a ver... tengo la siguiente funcion para validar un formulario. Esta esta en un archivo .js.
Código PHP:
function enviaaveria(){
    if (
document.formalta.data_avis.value == '') {
        
alert ("La Fecha de aviso és obligatoria.");
        return 
false;
    }else if (
document.formalta.ref_averia.value=''){
        
alert ("Referenciar la Averia es Obligatorio.");
        return 
false;
    } else if (
document.formalta.enviat_reparar.checked == true){
        if ((
document.formalta.data_envio.value == '')||(document.formalta.id_empresa_envio.value == '')){
            
alert ("La fecha de Envio y la Empresa son datos obligatorios.");
        }else{
            return 
true;
        }        
    }else{
        return 
true;
    }

y el form es el siguiente:
Código HTML:
<form name="formalta" action="averia/act_insert.php" method="POST" onSubmit="enviaaveria(this.form);return false">
<input align="left" size="20"type="hidden" name="id_averia" value="<? echo $numaveria; ?>">
<table align="center">
<tr>
	<td>
		<input type="Button" name="refaveria" value="Ref. Averia" onClick="referenciaaveria();">
		<input type="Submit"name="grabar" value="Grabar">
	</td>
</tr>
</table>
<table width="82%" align="center" cellspacing="2" cellpadding="0" border="0" class="cuadre" >
<tr>
<td>
	<table width="100%" class="liniasota">
		<tr>
		<td width="15%">&nbsp;<font class="lletra2">Ref. Averia</font></td>
		<td align="left" width="55%"><input align="left" size="20"type="text"name="ref_averia" value=""></td>
		<td width="15%">&nbsp;<font class="lletra2">Fecha Aviso</font></td>
		<td align="left" width="15%"><input align="left" size="20"type="text"name="data_avis"></td>
		</tr>
	</table>
...
</form> 
el problema q tengo es q si me dejo la fecha si q me dispara el Alert, pero si le pongo la fecha el segundo if ya no me lo hace... q es donde compruebo si ha referenciado la averia!
cual puede ser el motivo? q es lo q estoy haciendo mal?

Gracias de antemano,

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #12 (permalink)  
Antiguo 17/07/2006, 04:45
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 5 meses
Puntos: 0
Cita:
Iniciado por sergi_climent
Código PHP:
    }else if (document.formalta.ref_averia.value=''){ 
No estas comparando estás igualando. Te comiste un =, jejeje.
__________________
La muerte es un camino que todos debemos recorrer...
  #13 (permalink)  
Antiguo 17/07/2006, 04:49
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 11 meses
Puntos: 10
waka.... maldita vista... jajaja!

muchisimas gracias!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #14 (permalink)  
Antiguo 26/08/2009, 15:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: validar formulario sin onsubmit

A mi me pasa parecido a lo que dice caricatos
al dar click en el boton no pasa nada de los alert y me envia el mail vacio sin datos sin hacer comprobacion.

echenme la mano

esta es mi form con el boton:

<form action=sendcotizacion.php method=post onSubmit="return validar(this.form);return false">
<input name=telefono maxlength=255 size=53 value="" type=text
>
.
.
.
y asi todos mis input
<input type=submit value="Enviar datos">
</form>

mi funcion:

function validar() {
if (f.nombre.value=='') {
alert("Por favor escriba su Nombre completo");
f.name.focus();
return (false);
}
if (f.mail.value=='') {
alert("Por favor escriba su dirección de correo electrónico");
f.email.focus();
return (false);
}
if (f.telefono.value=='') {
alert("Por favor escriba su mail");
f.subject.focus();
return (false);
}
if (f.empresa.value=='') {
alert("Por favor escriba El nombre de su empresa, si no repita su nombre.");
f.message.focus();
return (false);
}
if (f.rfc.value=='') {
alert("Por favor escriba su RFC completo.");
f.message.focus();
return (false);
}
if (f.direccion.value=='') {
alert("Por favor escriba su direccion, calle y numero.");
f.message.focus();
return (false);
}
if (f.colonia.value=='') {
alert("Por favor escriba su colonia.");
f.message.focus();
return (false);
}
if (f.delegacion.value=='') {
alert("Por favor escriba su delegacion o municipio.");
f.message.focus();
return (false);
}
if (f.ciudad.value=='') {
alert("Por favor escriba su ciudad.");
f.message.focus();
return (false);
}
if (f.fecha.value=='') {
alert("Por favor escriba la fecha tentativa cuando requiere el servicio.");
f.message.focus();
return (false);
}
if (f.comentarios.value=='') {
alert("Por favor escriba una descripcion del servicio que solicita.");
f.message.focus();
return (false);
}
}

me envia el mail VACIO y nunca me comprueba nada del java
YA ME FRUSTRE


CUANDO CONTESTEN COMO SE QUE YA LO HICIERON SINO LES DEJO MI MAIL [email protected]
  #15 (permalink)  
Antiguo 26/08/2009, 16:08
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, 7 meses
Puntos: 1485
Respuesta: validar formulario sin onsubmit

primero, debistes haber abierto un nuevo tema. no creo que te vayan a sancionar pero las normas del foro dice que no debes revivir temas con mas de 6 meses de antiguedad.

a tu tema... la siguiente linea esta mal escrita
Código:
onSubmit="return validar(this.form);return false"
especificamente porque form no es una propiedad contenida en el elemento <FORM>, tal propiedad solo existe en los elementos de formulario como <INPUT>. simplemente tenias que poner el keyword this para referite al formulario. y segundo, tu funcion no tiene un argumento declarado, de modo que f no esta declarado por algun lugar de tu codigo. simplemente declara la funcion con el nombre validar(f){ ... }. y por ultimo, el return false esta de más. si lo dejas ahi el formulario nunca se enviara, incluso si valida bien.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
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 10:43.