Foros del Web » Programando para Internet » Javascript »

problema con return false

Estas en el tema de problema con return false en el foro de Javascript en Foros del Web. hola, queria ver si me pueden ayudar con una función que valida si los radio button estan seleccionados, y no encuentra uno que no lo ...
  #1 (permalink)  
Antiguo 18/10/2012, 10:36
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta problema con return false

hola, queria ver si me pueden ayudar con una función que valida si los radio button estan seleccionados, y no encuentra uno que no lo este envia una alerta y retorna false. la alerta la envia correctamente pero no detiene el envio del formulario. Lo probe en IE , mozilla y opera, y en ninguno detiene el envio.

funcion javascript:
Código:
<script type="text/javascript" language="javascript">
		
	function Radio()
	{
	var valor=0 ;
	var elementos, longitud;
	
	elementos = document.getElementById('SignupForm').elements;
    /*elementos = document.getElementById(document.forms['SignupForm']).elements;*/
    longitud = document.forms['SignupForm'].length;
    	for (var i = 0; i < longitud; i++){
    	if(elementos[i].type == "radio")
			{
        	valor = valor+1;
         	}
		}
		validar(valor);
	}
	
	function validar(valor)
	{
		
	for ( var i = 1; i <= valor; i++ ) 
		{
		if (!validarBotonRadio(i))
			//alert("1")
			{
			alert("no ha terminado la Evaluación. Pregunta "+i+" sin respuesta." ) ;
			return false;
			}
		}
		alert("Evaluacion Completa" ); 
		return true;
	}
	function validarBotonRadio(i)
	{
	//alert("2")
	x = document.form1["group"+i];
	//alert(document.theForm["test_"+i+"_rp"])
	for ( k = 0; k < x.length; k++ ) 
		//alert("test_"+i+"_rp"+k)
		{
		if ( x[k].checked ) 
			{
			
			return true;
			}
		}
		return false;
	}
    </script>
llamada del onsubmit en el form
Código:
<form id="SignupForm" name="form1" action="responder.php" method="post" enctype="multipart/form-data" onSubmit="return Radio();">
ojala me puedan ayudar desde ya muchas gracias
  #2 (permalink)  
Antiguo 18/10/2012, 10:51
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años, 5 meses
Puntos: 79
Respuesta: problema con return false

condicionantes:

Código:
return false;
bucles:

Código:
break;
salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #3 (permalink)  
Antiguo 18/10/2012, 11:04
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

gracias por la respuesta pero nada hice los cambios que se debian incluso probe otros y nada pero gracias igual
  #4 (permalink)  
Antiguo 18/10/2012, 11:18
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años, 5 meses
Puntos: 79
Respuesta: problema con return false

puedes colocar el código completo del formulario con los radio y el script, de otra manera se complica.

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #5 (permalink)  
Antiguo 18/10/2012, 12:05
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

codigo completo es una encuesta.
Código:
<?php
session_start();
include ("archivo php de funciones");
$conec = new conexion();
$correo = "[email protected]";
$ide = 1;
$cierraambito = 0;
$contador = 0;
$nmr = 0;
echo "correo: ".$correo.", ide: ".$ide;
if($correo && $ide){
$RS = $conec->comprobar_correo($correo);
	$numrows = mysql_num_rows($RS);
	if($numrows != 0){
		$nmr = $conec->respondio($correo, $ide);
	  
		if($nmr == 0){		
		$RS2 = $conec->buscar_cliente($correo);
	
	?>
<!DOCTYPE html>
<html>
<head>
    
    <title>titulo</title>
    
       
    <style type="text/css">
        body { font-family:Lucida Sans, Arial, Helvetica, Sans-Serif; font-size:13px; margin:20px;}
        #main { width:960px; margin: 0px auto; border:solid 1px #b2b3b5; -moz-border-radius:10px; padding:20px; background-color:#f6f6f6;}
        #header { text-align:center; border-bottom:solid 1px #b2b3b5; margin: 0 0 20px 0; }
        fieldset { border:none; width:600px;}
        legend { font-size:18px; margin:0px; padding:10px 0px; color:#f05120; font-weight:bold}
        label { display:block; margin:15px 0 5px;}
        input[type=text], input[type=password] { width:300px; padding:5px; border:solid 1px #000;}
        .prev, .next { background-color:#f05120; padding:5px 10px; color:#fff; text-decoration:none;}
        .prev:hover, .next:hover { background-color:#000; text-decoration:none;}
        .prev { float:left;}
        .next { float:right;}
        #steps { list-style:none; width:100%; overflow:hidden; margin:0px; padding:0px;}
        #steps li {font-size:24px; float:left; padding:10px; color:#b0b1b3;}
        #steps li span {font-size:11px; display:block;}
        #steps li.current { color:#000;}
        #makeWizard { background-color:#b0232a; color:#fff; padding:5px 10px; text-decoration:none; font-size:18px;}
        #makeWizard:hover { background-color:#000;}
    </style>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script type="text/javascript" src="FormToWizard/formToWizard.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#SignupForm").formToWizard({ submitButton: 'SaveAccount' })
        });
    </script>
     <!-- Meta Tags -->
    <meta charset="utf-8">
    
	<script type="text/javascript" language="javascript">
		
	function Radio()
	{
	var valor=0 ;
	var elementos, longitud;
	
	elementos = document.getElementById('SignupForm').elements;
    /*elementos = document.getElementById(document.forms['SignupForm']).elements;*/
    longitud = document.forms['SignupForm'].length;
    	for (var i = 0; i < longitud; i++){
    	if(elementos[i].type == "radio")
			{
        	valor = valor+1;
         	}
		}
		validar(valor);
	}
	
	function validar(valor)
	{
		
	for ( var i = 1; i <= valor; i++ ) 
		{
		if (!validarBotonRadio(i))
			//alert("1")
			{
			alert("no ha terminado la Evaluación. Pregunta "+i+" sin respuesta." ) ;
			return false;
			}
		}
		alert("Evaluacion Completa" ); 
		return true;
	}
	function validarBotonRadio(i)
	{
	//alert("2")
	x = document.form1["group"+i];
	//alert(document.theForm["test_"+i+"_rp"])
	for ( k = 0; k < x.length; k++ ) 
		//alert("test_"+i+"_rp"+k)
		{
		if ( x[k].checked ) 
			{
			
			return true;
			}
		}
		return false;
	}
    </script>
</head>
<body>
    
	<div id="main">
        <div id="header">
          
		   <img style="margin-bottom:8px; margin-top:-15px;" src="imagen" alt="" />
           
        </div>
		<?php
		
		while ($row =  mysql_fetch_array($RS2) )
									{
		?>
        <div style="margin:auto auto auto auto; width:750px">
		<form id="SignupForm" name="form1" action="responder.php" method="post" enctype="multipart/form-data" onSubmit="return Radio();">
        <fieldset>
            <legend>Información Personal</legend>
            <label for="Nombre">Nombre</label>
            <?php
		echo "<input id='Nombre' type='text' disabled='true' value='".$row['Nombre_Cli']."' />";
										
	    ?>
	    <label for="Apellidos">Apellidos</label>
             <?php
            	echo "<input id='Apellidos' type='text' disabled='true' value='".$row['Apellidos_Cli']."'/>";
									
		    ?>
            <label for="Correo">Correo</label>
            <?php
            	echo "<input id='Correo' type='text' disabled='true' value='".$row['Correo_Cli']."'/>";
		
	    ?>
	    <label for="Cargo">Cargo</label>
            <?php
            	echo "<input id='Cargo' type='text' disabled='true' value='".$row['Nombre_Cargo']."'/>";
	    ?>
	    <label for="Mina">Mina</label>
            <?php
            	echo "<input id='Mina' type='text' disabled='true' value='".$row['Nombre_Mina']."'/>";
								
	    ?>
            <br />
	    <br />
	    <?php
			echo "<a href='actualiza_info.php?correo=".$row['Correo_Cli']."&nomc=".$row['Nombre_Cargo']."&nomm=".$row['Nombre_Mina']."'>Actualizar Información</a>";
									}
			?>
			
        </fieldset>
<!--GENERACION DE LA ENCUESTA DESDE LA BASE DE DATOS.-->      
<?php

$ambito1 = "";
$idencuesta = $conec->llamar_idencuesta($ide);
$RS3 = $conec->llamar_preguntas($idencuesta);

while($row =  mysql_fetch_array($RS3) )
									{
										$contador++;
										if($ambito1 != $row['Ambito_Preg']){
											$ambito1 = $row['Ambito_Preg'];
										if($cierraambito == 1){
											echo '</fieldset>';
											}
										echo '<fieldset>';
                                        echo '<legend>'.$ambito1.'</legend>';
										$cierraambito = 1;
										
											}
										echo '<label>'.$contador.'-. '.$row['Pregunta'].'</label>';
										echo '1<input type="radio" id="group'.$contador.'" name="group'.$contador.'" value="1">';
										echo '2<input type="radio" id="group'.$contador.'" name="group'.$contador.'" value="2">';
										echo '3<input type="radio" id="group'.$contador.'" name="group'.$contador.'" value="3">';
										echo '4<input type="radio" id="group'.$contador.'" name="group'.$contador.'" value="4">';
										echo '5<input type="radio" id="group'.$contador.'" name="group'.$contador.'" value="5">';
										echo 'No Aplica<input type="radio" id="group'.$contador.'" name="group'.$contador.'" value="6">';
																												
										}
										$_SESSION['contador'] = $contador;
										$_SESSION['correo'] = $correo;
										$_SESSION['idenvio'] = $idenvio;
?>  
        <!--comentario.-->
        <label>Comentario adicional.</label>
        <textarea id ="comentario"vname="comentario" cols="80" rows="7"></textarea>
        
        <p>
            <input id="SaveAccount" type="submit" value="Enviar Encuesta" />
        </p>
         
        </form>
    </div>
</div>
</body>
</html>
<?php
	}
	else{
		echo "<META HTTP-EQUIV='REFRESH' CONTENT='3;URL=agradecimiento.php?correo=".$correo."'>";
		}
	}
	}
	else{
		echo "El Correo no pertenece a nuestros registros.";
		$correo="";
		}

?>
  #6 (permalink)  
Antiguo 18/10/2012, 12:06
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

e puesto comentarios donde va info importante que no podia publicar
  #7 (permalink)  
Antiguo 18/10/2012, 13:02
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años, 5 meses
Puntos: 79
Respuesta: problema con return false

mire el código pero es mejor demostrarlo con un ejemplo
esta return false y break, prueba primero con
break comentado y luego con return false comentado.
Al final del recorrido te debe salir un alerta de mensaje:


Código:
<script>
var tope = 10;
for( i = 1 ; i <= tope ; i++ )
{
	if(confirm("mensaje número " + i + " de " + tope + "\n\ncontianuar saludando?"))
	{
		return false;
		//break;				
	}
	
}
alert("indicador de salida del bucle y final del script");
</script>
ahora entiendes la diferencia ? reemplaza los "return false" por "break"

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #8 (permalink)  
Antiguo 21/10/2012, 21:21
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

disculpa que moleste tanto pero probé lo de los break y return false pero sigue sin parar el envio del formulario :S:S:S:S:S:S

no se si tendras otra idea de que pueda estar fallando :S

gracias de antemano :)
  #9 (permalink)  
Antiguo 21/10/2012, 23:12
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
Respuesta: problema con return false

Hola:

Cuando se envían los formularios suele ser por que se aborta la validación por algún error... entonces no se ejecuta el return...

Al menos he visto que intentas usar algo que no existe:

longitud = document.forms['SignupForm'].length;

Si usas la colección document.forms, lo que debe seguir en la referencia es el atributo name del form. El id no vale, y el name veo que es "form1"...

Mira ese caso y si sigue será por algún otro error, que podrías encontrar fácilmente con la consola de errores de tu navegador.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 22/10/2012, 09:52
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

gracias por la respuesta :) intentaré lo que me dices a ver que pasa.
  #11 (permalink)  
Antiguo 23/10/2012, 15:14
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

probé lo que me dijiste pero no me dió resultado el script no funcionó he tratado por todos lados pero nada :S:S:S:S:S:S:S:S.

tengo una consulta aparte que me apareció recien hoy en otro archivo.

ejecuto un codigo php que subí al hosting, todo funciona bien en chrome y mozilla pero en IE no funciona bien.

ahora si abro ese mismo script en mi pc por el localhost si lo ejecuta IE ademas de los otros dos sin ningun problema que podra ser.

ojala me puedan ayudar ya que es para mi trabajo.

nota: programo con dreamweaver CS5 y subo las paginas con cpanel.

gracias
  #12 (permalink)  
Antiguo 24/10/2012, 14:37
 
Fecha de Ingreso: octubre-2012
Mensajes: 18
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: problema con return false

al final lo solucione :) quité las funciones y junte el codigo en una sola función arreglando un par de cosillas y funcionó super bien me valida 66 radio button como si nada XD

muchas gracias por la ayuda :)

saludos

aqui dejo el script pos si alguien le sirve

Código:
<script type="text/javascript" language="javascript">
		
	function Radio()
	{
	var valor=0 ;
	var elementos;
	//cuenta cuantos elementos tipo radio hay.
	elementos = document.forms[0].elements.length;
   
    	for (var i = 0; i < elementos; i++)
			{
    		if(document.forms[0].elements[i].type == "radio")
				{
        		valor = valor+1;
         		}
			}
	//valida si los radio estan checkeados y si encuentra alguno sin checkear da la alerta y detiene el envio del formulario.	
		for ( var j = 1; j <= valor; j++ ) 
			{
				var contador = 0;
			
			x = document.form1["group"+j];
			
	    	for ( k = 0; k < x.length; k++ ) 
	   			{
			
				if ( x[k].checked ) 
					{
			
					contador++;
					
					}
				
				}
				if(contador == 0){
					alert("no ha terminado la Evaluación. Pregunta "+ j +" sin respuesta." ) ;
					return false;
					}		
		
			}
		}
	
	
	 </script>

Etiquetas: false, formulario, funcion, php, return
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 13:13.