Foros del Web » Programando para Internet » Javascript »

Se Salta la validacion

Estas en el tema de Se Salta la validacion en el foro de Javascript en Foros del Web. Hola Tengo un fomulario con un campo de tipo varchar... lugo pincho el boton guardar hago una rutina de validacion y luego genero en submit ...
  #1 (permalink)  
Antiguo 30/08/2006, 08:28
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años, 5 meses
Puntos: 6
Se Salta la validacion

Hola
Tengo un fomulario con un campo de tipo varchar...
lugo pincho el boton guardar hago una rutina de validacion y luego genero en submit del form dentro del script..

el problema es que cuanfdo me encuentro en el input agregando contenido presiono enter del teclado y hace el submit :s y no valida nada...
lo raro que no tengo mas submit definidos... solo el del script.. se salta el script ya que no valida nada... solo hace el submit...

publico el codigo haber si se entiende mejor

Código:

<?php
	//require("seguridad.php");
	require("../config.inc.php");
		
?>

<?php	
	if (isset($_POST["txtnombre_modulo"])){
			
		$mod_nombre=$_POST["txtnombre_modulo"];

		$strsql = "INSERT INTO int_modulo (mod_nombre) VALUES ";
		$strsql.= " ('".$mod_nombre."')";
		$cn = conectar_mysql();
		mysql_query($strsql, $cn);
		$id = mysql_insert_id();
?>
<html>
<head>
	<script languaje='javascript'>
		alert('Registro realizado con éxito!');
		top.opener.document.location = top.opener.document.location;
	</script>
</head>
<body onload='javascript:window.close();'>
</body>
</html>
<?php		exit();
	}
?>


<html>
<head>
<link href="../config.inc.css" rel="stylesheet" type="text/css">
	<title>Nuevo Módulo</title>
<script language="javascript" src="../ajax.inc.js"></script>
<script language="javascript">

function validar(form){
	var strnom_modulo = trim(document.forms.frmdatos.txtnombre_modulo.value);
	if (strnom_modulo.length == 0 ){
		alert('Debe ingresar un nombre para el módulo');
		return;
	}
	if (strnom_modulo.length > 0 ){
		if(confirm('¿Esta seguro de guardar solo los registros ingresados hasta el momento?.')){
			_values_send = "mod_nom=" + strnom_modulo;
			_target="div_respuesta";
			document.getElementById(_target).innerHTML="<table width='470' cellpadding='0' cellspacing='0'><tr><td valign='middle' align='center' valign='top' class='te_11_rojo'>Verificando Datos...<br>&nbsp;</td></tr></table>";
			
			_objetus = ajax_postback();
			
		    _URL_="modulos_ag_ajax.php?";
		    _objetus.open("GET", _URL_+_values_send, true);
		    _objetus.onreadystatechange=function() {
				if (_objetus.readyState == 4){
					if (_objetus.status == 200){
						strrespuesta = trim(_objetus.responseText);
						
						if (strrespuesta == "OK"){
							document.forms.frmdatos.submit();
						} else {
							document.getElementById(_target).innerHTML="<table width='470' cellpadding='0' cellspacing='0'><tr><td valign='middle' align='center' valign='top' class='te_11_rojo'>Ya existe un módulo ingresado con ese nombre. <br>Favor de verificar sus datos.</td></tr></table>";
							document.forms.frmdatos.txtnombre_modulo.value="";
						}
					}
				}
			}
		    _objetus.send(null);			
			return;
		} else {
 			return;
		}
	}
}

	// MODO DE EMPLEO :  trim(texto)
	function trim(strtexto){
		var i;
		var sw = 1;
		var inlargo = strtexto.length;
		var strretorno = "";
		for(i=0;i<inlargo;i++){
			if(sw == 1){
				if(strtexto.charAt(i) != " "){
					sw = 0;
					strretorno = strretorno + strtexto.charAt(i);
				}		
			}else{
				strretorno = strretorno + strtexto.charAt(i);
			}
		}
		sw = 1;
		strtexto = strretorno;
		inlargo = strtexto.length;
		strretorno = "";
		for(i=(inlargo - 1);i>=0;i--){
			if(sw == 1){
				if(strtexto.charAt(i) != " "){
					sw = 0;
					strretorno = strtexto.charAt(i) + strretorno;
				}		
			}else{
				strretorno = strtexto.charAt(i) + strretorno;
			}	
		}
		return strretorno;
	}
</script>
</head>
<body topmargin="0" leftmargin="0">
<form method="POST"  name="frmdatos" action="modulos_ag.php">
	<table width="510" border="0" cellpadding="0" cellspacing="2">
		<tr>
			<td bgcolor="#8c0000" colspan="3" height="20" class="ti_14_blanco" style="font-size:22;">&nbsp;AGREGAR MÓDULO</td>											
		</tr>	
		<tr height="25"><td></td></tr>	
		<tr>
			<td height="25" width="150" bgcolor="#dfffdf"  class="ti_9_azul" style="font-size:12;">&nbsp;Nombre del Módulo</td>
			<td width="10" class="ti_12_negro" align="center">:</td>
			<td width="320" class="ti_12_negro"><input type="text" name="txtnombre_modulo" style="width:320;" size="40" class="ti_12_negro"  maxlength="40"></td>
		</tr>		
		<tr height="10"><td></td></tr>
		<tr>
			<!--<td><input type="reset" name="cmdborrar" class="button" value="Limpiar"></td>-->
		</tr>
		<tr height="5"><td></td></tr>	
		<tr>
			<td colspan="3">
				<div id="div_respuesta">
					<table width='470' cellpadding='0' cellspacing='0'>
						<tr>
							<td valign='middle' align='center' valign='top' class='te_11_rojo'>&nbsp;<br>&nbsp;</td>
						</tr>
					</table>
				</div>
			</td>
		</tr>
		<tr height="15"><td></td></tr>	
		<tr>
			<td colspan="2"></td>
			<td align="center">
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				<input type="button" name="cmdsiguiente" class="button" value="Guardar" onclick="javascript:validar();">
				&nbsp;&nbsp;
				<input type="button" name="cmdsalir" class="button"  value="Salir" onclick="javascript:window.close();">
			</td>
		</tr>
	</table>
</form>
</body>
</html>
__________________
sEIK! -Chile-
Analista Programador.
  #2 (permalink)  
Antiguo 30/08/2006, 08:55
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Otro caso de validación mal hecho...

Por ahora no he mirado tu código, pero viendo el código noto que no validas en el evento submit...

FORMA CORRECTA DE VALIDACIÓN
<form action="destno.html" method="get" onsubmit="return valida(this)" >

Y la función de validación que devuelva true o false según valide o no...

Hay muchos temas sobre validación, te recomiendo que leas alguno (en los que participo procuro convencer a usar la forma correcta)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 30/08/2006, 09:25
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años, 5 meses
Puntos: 6
Exclamación mira..

Estuve investigando sobre el tema mientras esperaba una respuesta y tambien encontre el manejo de eventos donde estaba lo que dices... onsubmit="return validar(this)"

efectivamente al igual que tu logre validar el form pero no logro detener el proceso de submit que corre por abajo. me manda el mensaje de alert que tengo pero luego de aceptar el alert igual genera el submit....

entonces estoy desconcertado... espero mas ayuda por favor

recuerda que esto pasa solo cuando presiono enter dentro del focus del campo input...
__________________
sEIK! -Chile-
Analista Programador.
  #4 (permalink)  
Antiguo 30/08/2006, 10:04
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años, 5 meses
Puntos: 6
mmm

Alguna otra opinion ?
__________________
sEIK! -Chile-
Analista Programador.
  #5 (permalink)  
Antiguo 30/08/2006, 10:30
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Sin duda estás haciendo algo mal, porque si pones la etiqueta tal como la puse y haces el submit con el botón submit (como debe hacerse) seguro que el formulario no se envía...

Revísalo y nos cuentas... (lo tengo probado y más que probado en todos los navegadores que he usado... é lo que é...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 31/08/2006, 11:24
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años, 5 meses
Puntos: 6
te creo,pero.

te creo pero donde esta el error o.O de verdad que no lo veo =(

si observas el codigo te daras cuenta que hice los cambios y auun asi pasa el submit :s

espero puedas ver lo k pasa por que yo no lo logro ver.

Código:
<?php
	//require("seguridad.php");
	require("../config.inc.php");
		
?>

<?php	
	if (isset($_POST["txtnombre_modulo"])){
			
		$mod_nombre=$_POST["txtnombre_modulo"];

		$strsql = "INSERT INTO int_modulo (mod_nombre) VALUES ";
		$strsql.= " ('".$mod_nombre."')";
		$cn = conectar_mysql();
		mysql_query($strsql, $cn);
		$id = mysql_insert_id();
?>
<html>
<head>
	<script languaje='javascript'>
		alert('Registro realizado con éxito!');
		top.opener.document.location = top.opener.document.location;
	</script>
</head>
<body onload='javascript:window.close();'>
</body>
</html>
<?php		exit();
	}
?>


<html>
<head>
<link href="../config.inc.css" rel="stylesheet" type="text/css">
	<title>Nuevo Módulo</title>
<script language="javascript" src="../ajax.inc.js"></script>
<script language="javascript">

function validar(form){
	var strnom_modulo = trim(document.forms.frmdatos.txtnombre_modulo.value);
	if (strnom_modulo.length == 0 ){
		alert('Debe ingresar un nombre para el módulo');
		return;
	}
	if (strnom_modulo.length > 0 ){
		if(confirm('¿Esta seguro de guardar solo los registros ingresados hasta el momento?.')){
			_values_send = "mod_nom=" + strnom_modulo;
			_target="div_respuesta";
			document.getElementById(_target).innerHTML="<table width='470' cellpadding='0' cellspacing='0'><tr><td valign='middle' align='center' valign='top' class='te_11_rojo'>Verificando Datos...<br>&nbsp;</td></tr></table>";
			
			_objetus = ajax_postback();
			
		    _URL_="modulos_ag_ajax.php?";
		    _objetus.open("GET", _URL_+_values_send, true);
		    _objetus.onreadystatechange=function() {
				if (_objetus.readyState == 4){
					if (_objetus.status == 200){
						strrespuesta = trim(_objetus.responseText);
						
						if (strrespuesta == "OK"){
							document.forms.frmdatos.submit();
						} else {
							document.getElementById(_target).innerHTML="<table width='470' cellpadding='0' cellspacing='0'><tr><td valign='middle' align='center' valign='top' class='te_11_rojo'>Ya existe un módulo ingresado con ese nombre. <br>Favor de verificar sus datos.</td></tr></table>";
							document.forms.frmdatos.txtnombre_modulo.value="";
						}
					}
				}
			}
		    _objetus.send(null);			
			return;
		} else {
 			return;
		}
	}
}

	// MODO DE EMPLEO :  trim(texto)
	function trim(strtexto){
		var i;
		var sw = 1;
		var inlargo = strtexto.length;
		var strretorno = "";
		for(i=0;i<inlargo;i++){
			if(sw == 1){
				if(strtexto.charAt(i) != " "){
					sw = 0;
					strretorno = strretorno + strtexto.charAt(i);
				}		
			}else{
				strretorno = strretorno + strtexto.charAt(i);
			}
		}
		sw = 1;
		strtexto = strretorno;
		inlargo = strtexto.length;
		strretorno = "";
		for(i=(inlargo - 1);i>=0;i--){
			if(sw == 1){
				if(strtexto.charAt(i) != " "){
					sw = 0;
					strretorno = strtexto.charAt(i) + strretorno;
				}		
			}else{
				strretorno = strtexto.charAt(i) + strretorno;
			}	
		}
		return strretorno;
	}
</script>
</head>
<body topmargin="0" leftmargin="0">
<form method="POST"  name="frmdatos" action="modulos_ag.php" onsubmit="return validar(this)" >
	<table width="510" border="0" cellpadding="0" cellspacing="2">
		<tr>
			<td bgcolor="#8c0000" colspan="3" height="20" class="ti_14_blanco" style="font-size:22;">&nbsp;AGREGAR MÓDULO</td>											
		</tr>	
		<tr height="25"><td></td></tr>	
		<tr>
			<td height="25" width="150" bgcolor="#dfffdf"  class="ti_9_azul" style="font-size:12;">&nbsp;Nombre del Módulo</td>
			<td width="10" class="ti_12_negro" align="center">:</td>
			<td width="320" class="ti_12_negro"><input type="text" name="txtnombre_modulo" style="width:320;" size="40" class="ti_12_negro"  maxlength="40" onsubmit="javascript:validar();"></td>
		</tr>		
		<tr height="10"><td></td></tr>
		<tr>
			<!--<td><input type="reset" name="cmdborrar" class="button" value="Limpiar"></td>-->
		</tr>
		<tr height="5"><td></td></tr>	
		<tr>
			<td colspan="3">
				<div id="div_respuesta">
					<table width='470' cellpadding='0' cellspacing='0'>
						<tr>
							<td valign='middle' align='center' valign='top' class='te_11_rojo'>&nbsp;<br>&nbsp;</td>
						</tr>
					</table>
				</div>
			</td>
		</tr>
		<tr height="15"><td></td></tr>	
		<tr>
			<td colspan="2"></td>
			<td align="center">
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				<input type="submit" name="cmdsiguiente" class="button" value="Guardar">
				&nbsp;&nbsp;
				<input type="button" name="cmdsalir" class="button"  value="Salir" onclick="javascript:window.close();">
			</td>
		</tr>
	</table>
</form>
</body>
</html>
__________________
sEIK! -Chile-
Analista Programador.
  #7 (permalink)  
Antiguo 31/08/2006, 21:02
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Miré tu código por encima, y veo que sales de la validación usando return (ni true ni false)... y un return es igual a un return true... pero los casos que no pase la validación tiene que devolver return false.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 18:30.