Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con el submit desde un select (oncheange) PHP

Estas en el tema de Problema con el submit desde un select (oncheange) PHP en el foro de PHP en Foros del Web. Que tal amigos del foro, antes que nada les agradezco su gran ayuda y tiempo. Tengo un problema, estoy desarrollando un sistema en Ajax y ...
  #1 (permalink)  
Antiguo 13/09/2013, 15:47
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Problema con el submit desde un select (oncheange) PHP

Que tal amigos del foro, antes que nada les agradezco su gran ayuda y tiempo. Tengo un problema, estoy desarrollando un sistema en Ajax y JQuery para que al hacer submit en un form no me recargue toda la página, ya he logrado hacer que funcione al crear un input:

Código HTML:
Ver original
  1. <input name="Enviar" type="submit" value="Consultar"/>

Sin embargo cuando pongo un atributo onchange en un select multiple me carga la página y me redirige a la hoja de php:

Código HTML:
Ver original
  1. <select name="view[]" id="view" multiple="multiple" style="height:400px;width:400px;" onchange="this.form.submit();">

¿Espero me puedan ayudar?

Gracias
Saludos

index.php
Código HTML:
Ver original
  1. <form name="estados" id="estados" action="filtro_edo_login.php" method="POST" onsubmit="selectAllOptions('select_2');">
  2.  
  3.                         Elementos 109 de 109<br />
  4.                         <select name="view[]" id="view" multiple="multiple" style="height:400px;width:400px;" onchange="this.form.submit();">
  5.                        
  6.                         <?php
  7.            
  8.                             $consult_edo="SELECT id_estado, estado_dsc FROM cat_estado";
  9.                            
  10.                             $result_edo=mysql_query ($consult_edo,$conexion);  
  11.                                                                    
  12.                                 while ($fila=mysql_fetch_array($result_edo)){  
  13.                                
  14.                                         echo '<option value="'.$fila["id_estado"].'"';
  15.                                                 if($_POST["view"]==$fila["id_estado"]) echo " selected";
  16.                                         echo '>'.$fila["estado_dsc"].'</option>';  
  17.                         }
  18.                            
  19.                                    
  20.                         ?>
  21.                         </select>
  22.  
  23.         </form>
  24.  
  25. <div id="ajax_loader"><img id="loader_gif" src="loader.gif" style=" display:none;"/><div>

js
Código Javascript:
Ver original
  1. <script>
  2.  
  3. function selectAllOptions(selStr)
  4. {
  5. var selObj = document.getElementById(selStr);
  6. for (var i=0; i<selObj.options.length; i++) {
  7. selObj.options[i].selected = true;
  8. }
  9.  
  10. }
  11.  
  12. // esperamos que el DOM cargue
  13.         $(document).ready(function() {
  14.             // definimos las opciones del plugin AJAX FORM
  15.             var opciones= {
  16.                                beforeSubmit: mostrarLoader, //funcion que se ejecuta antes de enviar el form
  17.                                success: mostrarRespuesta, //funcion que se ejecuta una vez enviado el formulario
  18.                                
  19.             };
  20.              //asignamos el plugin ajaxForm al formulario y le pasamos las opciones
  21.             $('#estados').ajaxForm(opciones) ;
  22.            
  23.              //lugar donde defino las funciones que utilizo dentro de "opciones"
  24.              function mostrarLoader(){
  25.                       $("#loader_gif").fadeIn("slow");
  26.              };
  27.              function mostrarRespuesta (responseText){
  28.                            //alert("Mensaje enviado: "+responseText);
  29.                           $("#loader_gif").fadeOut("slow");
  30.                           $("#ajax_loader").append(responseText);
  31.                          
  32.                           //$("#ajax_loader").after(responseText).remove();
  33.                           $("#ajax_loader").replaceWith(responseText);
  34.              };
  35.    
  36.         });
  37.        
  38.  
  39. </script>

filtro_edo_login.php
Código PHP:
<?php

include("conexion_mysql.php");

if(isset(
$_POST["view"])){

$edo=$_POST["view"];

$implode=implode("','",$edo);

$consult_tax="SELECT dat_matriz.id_matriz, cat_taxa.taxon FROM dat_matriz INNER JOIN cat_taxa ON cat_taxa.id_tax=dat_matriz.id_tax WHERE dat_matriz.id_estado IN('".$implode."') GROUP BY cat_taxa.taxon ORDER BY cat_taxa.taxon ASC";
$result_tax=mysql_query ($consult_tax,$conexion);
$num_tax=mysql_num_rows($result_tax);

?>

    <div id="ajax_loader"><img id="loader_gif" src="loader.gif" style=" display:none;"/>
    
                        Elementos <?php echo $num_tax?> de 244<br />
                        <select name="view2[]" multiple="multiple" style="height:400px;width:400px;">
                        <?php
            
                            $consult_tax
="SELECT dat_matriz.id_matriz, cat_taxa.taxon FROM dat_matriz INNER JOIN cat_taxa ON cat_taxa.id_tax=dat_matriz.id_tax WHERE dat_matriz.id_estado IN('".$implode."') GROUP BY cat_taxa.taxon ORDER BY cat_taxa.taxon ASC";
                        
                            
$result_tax=mysql_query ($consult_tax,$conexion);    
                            
                                while (
$fila=mysql_fetch_row($result_tax)){  
                                
                                          echo 
'<option value="'.$fila[0].'"';
                                                  if(
$_POST["view2"]==$fila[0]) echo " selected"
                                         echo 
'>'.$fila[1].'</option>';   
                        }
                            
                        
                                    
                        
?>
                        </select></div>

<?php

}else{
    
    echo 
"No ha seleccionado ningún elemento de la lista.";    
    
}

?>
  #2 (permalink)  
Antiguo 13/09/2013, 15:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con el submit desde un select (oncheange) PHP

La función que se ejecuta en onsubmit debería devolver false para evitar que se envíe el formulario, ese tema es únicamente responsabilidad de Javascript y no de PHP, así que tu problema está fuera de contexto.

Código HTML:
Ver original
  1. <!-- MAL -->
  2. <form onsubmit="foo()">
  3.  
  4. <!-- BIEN -->
  5. <form onsubmit="foo(); return false">
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/09/2013, 16:27
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Problema con el submit desde un select (oncheange) PHP

Primeramente una disculpa por poner mi problema en está sección, tendré un poco más de cuidado. En cuanto a mi problema te agradezco mucho tu ayuda pateketrueke, sin embargo acabo de probar tu resolución y no funciona, aún me recarga la página.

Gracias
  #4 (permalink)  
Antiguo 13/09/2013, 17:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Problema con el submit desde un select (oncheange) PHP

Bueno buscando un poco pude resolver mi problema con JQuery, les dejo el código:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.         $(function () {
  3.             $("#view").live("dblclick", function () {
  4.                 $("#estados").submit();
  5.             });
  6.         });
  7.     </script>
  #5 (permalink)  
Antiguo 13/09/2013, 17:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con el submit desde un select (oncheange) PHP

Hola:

Mal, mal, mal... es un error grave depender de javascript para cosas importantes... el submit se debe hacer desde un botón... luego se puede cancelar con lo que te ha comentado pateketrueke y aplicar la tecnología Ajax... Todos tenemos derecho a inhabilitar javascript... Ajax puede ser accesible.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 19/09/2013, 12:53
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Problema con el submit desde un select (oncheange) PHP

Te agradezco mucho tu comentario caricatos, de hecho antes realizaba el submit con un botón, sin embargo en lo que respecta a mi problema necesito que al seleccionar un elemento de la lista del select multiple me haga un submit, ya que el sistema que estoy desarrollando es un filtrado dinámico, en biología se le conoce como una "policlave taxonómica dinámica", la cual actúa en ambos sentidos, es decir, si selecciono un elemento de la lista1 me filtra los elementos de la lista2 y viceversa. ¿Entonces tú cómo harías el submit considerando el problema que tengo?

Gracias
Saludos

Etiquetas: ajax, javascript, jquery
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 16:18.