Foros del Web » Programando para Internet » Javascript »

Frenado de ejecución de Form

Estas en el tema de Frenado de ejecución de Form en el foro de Javascript en Foros del Web. Estimados amigos del Foro, Junto con saludarlos, les presento la siguiente situación. Tengo un form, en el cual se deben validar algunas opciones, entre ellas, ...
  #1 (permalink)  
Antiguo 04/11/2003, 11:45
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Frenado de ejecución de Form

Estimados amigos del Foro,

Junto con saludarlos, les presento la siguiente situación.

Tengo un form, en el cual se deben validar algunas opciones, entre ellas, las muy habituales claves (confirmación de clave).

El problema que se presenta es que al utilizar la function creada, esta envía el alert pero continúa con la ejecución, enviando mensajes que no corresponden, es decir, sigue su procesamiento.

Cómo puedo frenar dicho actuar, y que sólo quede en el focus indicado en la function?

Dejo expuesto parte del código para vuestro entender.

function valida_clave(form)
{
if (form.CLAVE.value != form.CLAVE2.value)
{
alert("Las claves ingresadas no coinciden.");
form.CLAVE.focus();
form.CLAVE.value="";
form.CLAVE2.value="";
return false;
}
}



Llamado al final del formulario...

<input type="submit" name="Guarda Usuario" value="GUARDAR DATOS" onclick="valida_clave(form);">
<input type="reset" name="Submit2" value="LIMPIAR"></p>


Pero entre la function y este llamado o submit, se encuentra el siguiente llamado a formulario...

<form name="form_ingresarusuarios" method="POST" action="modulo_bd_confingresar_usuarios.php">

el cual continúa ejecutándose, y envía otros errores que no debería. Debería frenar en la posición que la function indica a mi juicio.

Vuestra ayuda sería muy útil,

__________________
Saludos,

MAC
  #2 (permalink)  
Antiguo 04/11/2003, 11:51
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Prueba a llamar a esa función en el evento onSubmit del formulario en vez de en el botón
  #3 (permalink)  
Antiguo 04/11/2003, 14:40
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Jercer,

Gracias por tu respuesta, pero lamentablemente al colocar el evento onSubmit, no efectúa la validación vía el script, y guarda erróneamente los datos. Es decir, no efectúa la confirmación de la clave.

Qué puede hacer? Dónde estaría el error al trabajar con onsubmit?
__________________
Saludos,

MAC
  #4 (permalink)  
Antiguo 04/11/2003, 15:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Habría de funcionar en el evento onsubmit.... prueba así:


function valida_clave(form)
{
if (form.CLAVE.value != form.CLAVE2.value)
{
alert("Las claves ingresadas no coinciden.");
form.CLAVE.focus();
form.CLAVE.value="";
form.CLAVE2.value="";
return false;
}
else{return true}
}

<input type="submit" name="Guarda_Usuario" value="GUARDAR DATOS">

<form name="form_ingresarusuarios" method="POST" action="modulo_bd_confingresar_usuarios.php" onsubmit="return valida_clave(this);">


A ver si así le gusta
  #5 (permalink)  
Antiguo 04/11/2003, 18:45
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Lamentablemente tampoco funciona (

Ahora bien, estoy en lo correcto pero la modificación del onsubmit fue sugerida ahora en el llamado del otro form?

En todo caso, probe la solución colocando las sentencias en ambos lados, es decir, input y form, pero no funciona. Inicialmente da errores de sintáxis y luego guarda erróneamente los datos ingresados a la base. Por lo tanto, se salta el código javascript.

Por favor, alguien tiene alguna sugerencia? Estoy detenido en este tema desde hace días... Si es necesaria una nueva explicación o envío de código, por favor indicarlo.
__________________
Saludos,

MAC
  #6 (permalink)  
Antiguo 04/11/2003, 22:21
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Amigos del Foro,

Alguien podría brindarme una nueva idea o mejora al problema que mantengo.

Realmente he realizado todas las pruebas, sin resultados satisfactorios.

__________________
Saludos,

MAC
  #7 (permalink)  
Antiguo 05/11/2003, 12:59
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Amigos del Foro,

Nuevamente intento encontrar alguna solución a mi problema por medio de vuestra ayuda.

Será posible obtener alguna idea o link de como poder resolver el problema. Lo indicado hasta el momento no ha resuelto el problema.

__________________
Saludos,

MAC
  #8 (permalink)  
Antiguo 05/11/2003, 13:10
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola, sí que funciona, lo acabo de probar y funciona ok, lo único que no comprueba el script que los campos estén vacíos y si ambos están vacíos lo envía.

Añadiendo al script el que compruebe que los campos no estén vacíos funciona muy bien, usa el ejemplo tal y como lo probe yo

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function valida_clave(form){
if(form.CLAVE.value == "" || form.CLAVE2.value == ""){
alert("Las claves ingresadas no coinciden.")
form.CLAVE.focus();
return false
}
if (form.CLAVE.value != form.CLAVE2.value){
alert("Las claves ingresadas no coinciden.");
form.CLAVE.focus();
form.CLAVE.value="";
form.CLAVE2.value="";
return false;
}
else{return true}
}
</script>
</head>

<body>
<form name="form_ingresarusuarios" method="POST" action="modulo_bd_confingresar_usuarios.php" onsubmit="return valida_clave(this);">
<input type="text" name="CLAVE" >
<input type="text" name="CLAVE2" >

<input type="submit" name="Guarda_Usuario" value="GUARDAR DATOS">
</form>
</p>
</body>
</html>
  #9 (permalink)  
Antiguo 05/11/2003, 23:19
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Tunait,

Lo siento, pero a pesar de seguir todo lo indicado (obviamente inserto en mi código y lógica), esto NO funciona.
Primero indica un error sintáxtico, y continúa la carga para aceptar el ingreso de datos y luego ingresar al usuario sin validar las claves. Es decir, no cumple el objetivo.

Expongo el código COMPLETO, con lo indicado por ti, para su validación. Espero tú o alguien pueda ayudarme con esto.


<?
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");

session_start();

if ($_SESSION["usuario"] == "")
{
header("Location: modulo_bd_login.php");
exit();
}

$Maquina= "localhost";
$Usuario= "miusuario";
$Password= "miclave";
$IdConect= mysql_connect( $Maquina, $Usuario, $Password );
if (!$IdConect)
{
echo "Error en la conexión con MySQL";
exit();
}
?>
<html>
<head>
<title>Módulo de Mantención</title>
<script language="JavaScript" type="text/JavaScript">
function volver()
{
history.go(-1);
}
function valida_clave(form)
{
if (form.CLAVE.value == "" || form.CLAVE2.value == "")
{
alert("Las claves ingresadas no coinciden o están en blanco.")
form.CLAVE.focus();
return false
}
if (form.CLAVE.value != form.CLAVE2.value)
{
alert("Las claves ingresadas no coinciden.");
form.CLAVE.focus();
form.CLAVE.value="";
form.CLAVE2.value="";
return false;
}
else
{
return true;
}
}
</script>
</head>
<body bgcolor="#FF9900">
<div align="center">&nbsp; <font face="Arial" size="4"><b>Módulo Mantención </b></font> </div>
<hr>
<form name="form_ingresarusuarios" method="POST" action="modulo_bd_confingresar_usuarios.php" onsubmit=="return valida_clave(this);">
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p align="center"><font size="4" face="Arial"><strong>Usuarios</strong><b></br>
(INGRESAR)</b></font></p>
<p align="center"><font size="4">(*)</font><font size="3"><strong>
Campos obligatorios</strong></font></p>
<p align="center"></p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<table border="0" cellpadding="0" cellspacing="2 " width="600">
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td width="300"><font size="4" face="Arial, Helvetica, sans-serif"><strong>Código
de Vendedor</strong> (*)</font></td>
<td><input name="CV" type="text" id="CA2" size="20" maxlength="100" tabindex="1"></td>
</tr>
<tr>
<td width="200"><font size="4" face="Arial, Helvetica, sans-serif"><strong>Código
de Agencia</strong> (*)</font></td>
<td><select name="CA" size="1" tabindex="2">
<option value=""></option>
<?
$Database = "mibase";
$SQLQuery = "select codigo_agencia from agencias order by codigo_agencia";
$Tabla = mysql_db_query($Database, $SQLQuery, $IdConect);
while ($Registro = mysql_fetch_object($Tabla))
{
$codigo_agencia = $Registro->codigo_agencia;
?>
<option value="<?=$codigo_agencia?>"><?=$codigo_agencia?></option>
<?
}
?>
</select>
<input type="checkbox" name="NAAGENCIA" value="no" tabindex="3">
(n/a)</td>
</tr>
<tr>
<td width="200"><font size="4" face="Arial, Helvetica, sans-serif"><strong>Código de Operador</strong> (*)</font></td>
<td><select name="CO" size="1" tabindex="4">
<?
$Database = "mibase";
$SQLQuery = "select codigo_operador from operadores order by codigo_operador";
$Tabla = mysql_db_query($Database, $SQLQuery, $IdConect);
while ($Registro = mysql_fetch_object($Tabla))
{
$codigo_operador = $Registro->codigo_operador;
?>
<option value="<?=$codigo_operador?>"><?=$codigo_operador? ></option>
<?
}
?>
</select>
<input name="NAOPERADOR" type="checkbox" id="NAOPERADOR" value="no" tabindex="5">
(n/a)</td>
</tr>
<tr>
<td width="200"><font size="4" face="Arial, Helvetica, sans-serif"><strong>Clave</strong>
(*) <font size="3"></font></font></td>
<td><input name="CLAVE" type="text" id="CA5" size="8" maxlength="8" tabindex="6">
<font size="3" face="Arial, Helvetica, sans-serif"> (Máximo 8 alfa-caracteres )</font></td>
</tr>
<td width="200"><font size="4" face="Arial, Helvetica, sans-serif"><strong>Confirme Clave</strong>
(*) <font size="3"></font></font></td>
<td><input name="CLAVE2" type="text" id="CA5" size="8" maxlength="8" tabindex="7">
</td>
</tr>
</table>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p align="left">
<input type="submit" name="Guarda Usuario" value="GUARDAR DATOS">&nbsp
<input type="reset" name="Submit2" value="LIMPIAR"></p>
&nbsp;&nbsp
<blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<hr>
<p align="center">
<input type="button" name="btnVolver" value="<< VOLVER" onClick="volver();">
</p>
</form>
</body>
</html>

Espero vuestra cooperación para con el caso.
__________________
Saludos,

MAC
  #10 (permalink)  
Antiguo 06/11/2003, 16:48
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Alguna novedad amigos del foro?

Espero poder contar con vuestro apoyo y análisis.
__________________
Saludos,

MAC
  #11 (permalink)  
Antiguo 07/11/2003, 00:46
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Estimados amigos el Foro,

Siento insistir, pero me gustaría saber si el no tener respuetas, significa que ya no puedo tener más ayuda o apoyo de Uds.

Como integrante nuevo de este foro, no manejo bien el mecanismo, me agradaría que un moderador me orientara en tal sentido para no escribir más sobre el caso, e investigar por otros lados.

Agradezco de antemano las ayudas, pero aún estoy detenido en el problema, y el tiempo no para...

Espero vuetros comentarios...
__________________
Saludos,

MAC
  #12 (permalink)  
Antiguo 07/11/2003, 06:43
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Prueba con esto:
function valida_clave(form)
{
if (form.CLAVE.value != form.CLAVE2.value)
{
alert("Las claves ingresadas no coinciden.");
form.CLAVE.focus();
form.CLAVE.value="";
form.CLAVE2.value="";
return false;
}
else{form.submit()}
}



Y cambias el botón de envío así:

<input type="button" name="Guarda Usuario" value="GUARDAR DATOS" onclick="valida_clave(form);">
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #13 (permalink)  
Antiguo 17/11/2003, 00:32
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
KarlanKas,

Debido a otras obligaciones, no había podido continuar con este tema. Y retomando me doy cuenta de tu mensaje de ayuda.

Agradezco tu apoyo, y más que nada por que dio resultado. Ahora bien, me dirigiré a ti, aunque no es costumbre del grupo, para entender un poco la lógica de lo expuesto, por que ciertamente el código practicamente nunca pase por el ELSE, y si entra a procesar la condición del IF, que siempre ha estado pero no funcionaba.

Dónde está la razón de dicho comportamiento. Sería agradecido de una breve explicación.
__________________
Saludos,

MAC
  #14 (permalink)  
Antiguo 17/11/2003, 03:53
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Realmente he de reconocer por qué pasa. El código que te envió la leporcia salvaje(tunait) debería funcionar. Tal vez no te funcione poruqe en tu formulario has puesto onsubmit=="... en vez de onsubmit="...

Aunque puede que no sea eso. En mi experiencia te diré que muchas veces me pasa que el formulario se procese antes del onsubmit por lo que normalmente utilizo la fórmula que te facilité.

Es como si el return false llegara demasiado tarde...

Siento no haberte sido de más utilidad.

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #15 (permalink)  
Antiguo 19/11/2003, 13:28
 
Fecha de Ingreso: octubre-2003
Ubicación: Santiago
Mensajes: 66
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchas gracias por tu respuesta. Como informático, siempre trato de encontrar la lógica de lo creado.

Ahora bien, en realidad he detectado el error que bien indicas del " == " en vez de " = ", aunque tu formula funciona muy bien.

Nuevamente, doy mis agradecimientos por el apoyo brindado y el tiempo tomado en el entender de la situación.

__________________
Saludos,

MAC
  #16 (permalink)  
Antiguo 19/11/2003, 14:09
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
A mandar!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 02:43.