Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] El evento change solo lo detecta la primera vez

Estas en el tema de El evento change solo lo detecta la primera vez en el foro de Jquery en Foros del Web. Buenas, En primer lugar pedir disculpas si lo que pregunto es muy evidente, pues es la primera vez que me encuentro con código jquery, llevo ...
  #1 (permalink)  
Antiguo 17/10/2014, 07:27
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
El evento change solo lo detecta la primera vez

Buenas,
En primer lugar pedir disculpas si lo que pregunto es muy evidente, pues es la primera vez que me encuentro con código jquery, llevo muchas horas intentar detectar que pasa, y no hay manera.
Resulta que tengo un desplegable en un formulario, al seleccionar por primera vez un valor, se ejecuta el evento change en jquery, y si alimentan otros desplegables. Si cambio el valor de dicho desplegable, se vuelven a alimentar los otros desplegables. Hasta aquí bien.
El problema está cuando selecciono el botón submit del formulario, se vuelve a cargar la misma página, pero luego no detecta el cambio en el desplegable.
Algo se me escapa pero no veo qué es:

El código del desplegable es:
Código HTML:
Ver original
  1. <select name="fTipus" id="fTipus">
  2.     <option value=""><span>Selecciona</span></option>
  3.     <option value="3">Piso</option>
  4.     <option value="4" >Casa</option>

Código Javascript:
Ver original
  1. $("#fTipus").change(function(){ //alert('tipus1: ' + $(this).val());
  2.             var jIdOpe = '-'+$("#fOperacio").val();
  3.             $('#fCiutat option').remove();
  4.             $('#fPreu option').remove(); // Borramos/Limpiamos todo los items de fPrecio
  5.             $('#fHabitacions option').remove(); // Borramos/Limpiamos todo los items de fHabitaciones
  6.             $('#fMetres option').remove(); // Borramos/Limpiamos todo los items de fMetros
  7.            
  8.             var selOper = '-'+$("#fOperacio").val();
  9.             var selTip = '-Seleccionar';
  10.  
  11.             $.post("<?php echo URL.'includes/inc_poblacions.php'?>",{ prmPoblacions:$(this).val()+selOper+selTip+lang },function(data){$("#fCiutat").html(data);})  
  12.             $.post("<?php echo URL.'includes/inc_caracteristiques.php'?>",{ prmCaracteristiques:$(this).val()+lang },function(data){$("#fCaracteristiques").html(data);})
  13.             $.post("<?php echo URL.'includes/inc_preu.php'?>",{ prmPreu:$(this).val()+lang+jIdOpe },function(data){$("#fPreu").html(data);})
  14.             $.post("<?php echo URL.'includes/inc_habitacions.php'?>",{ prmHabitacions:$(this).val()+lang },function(data){$("#fHabitacions").html(data);})
  15.             $.post("<?php echo URL.'includes/inc_metres.php'?>",{ prmMetres:$(this).val()+lang },function(data){$("#fMetres").html(data);})
  16.             var txt = $('#fOperacio option:selected').text(); <?php // obtener texto de form operacion ?>
  17.             $('input[name=ftxtOperacio]').val(txt); <?php // asignar texto de form operacion a ftxtOperacion ?>
  18.         });
  19.  
  20.         $("#fTipus").change(function(){ //alert('tipus2: ' + $(this).val());
  21.                 $.post("<?php echo URL.'includes/inc_caracteristiques.php'?>",{ prmCaracteristiques:$(this).val()+lang },function(data){$("#fCaracteristiques").html(data);})
  22.         });

No sé si me he explicado.
Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #2 (permalink)  
Antiguo 17/10/2014, 08:46
(Desactivado)
 
Fecha de Ingreso: abril-2013
Ubicación: rosario
Mensajes: 248
Antigüedad: 11 años, 7 meses
Puntos: 17
Respuesta: El evento change solo lo detecta la primera vez

Preguntas:
cuando presionas el submit que hace?
luego de esto, lo q vos queres decir es que el fTipus no se ejecuta nunca?
cuando cargas el elemento <select name="fTipus" id="fTipus">, lo cargas por ajax o normal?
tenes el sitio online para poder reproducir el error y analizarlo con firebug?
PD: una buena practica es crear una variable baseUrl en el layout principal de tu sitio, asi no tenes que utilizar <?php echo URL q es bastante engorroso.
  #3 (permalink)  
Antiguo 17/10/2014, 09:22
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: El evento change solo lo detecta la primera vez

Gracias diurno por responder.
En primer lugar voy a adjuntar un pantallazo para que se entienda mejor lo que me pasa

Justo entrar en el buscador en el primer desplegable selecciono Venta, en el segundo Piso y en consecuencia, por haber seleccionado Piso, en el desplegable Caracteristicas aparecen estos elementos

Sin pulsar el botón Buscar ahora, cambio el segundo desplegable y selecciono Casa, en el siguiente desplegable aparecen otros elementos


Pues bien, si ahora pulso el botón Buscar Ahora, aparece la misma página, con unos inmuebles a la derecho, que no se ven, y el mismo buscador, en el mismo estado de la consulta, sólo que en este momento es cuando, al cambiar el elemento del desplegable Tipo, no cambia el de característiques.

Me explicado mejor?

Lo siento, lo tengo todo en local, sinó pondría la url, pero en estos momentos no dispongo de espacio donde colgarla.

Los elementos de los desplegables los cargo normal, es decir, leyendo los datos en una base de datos mysql.

Al cargar por primera vez la página llega a estar del todo cargado (ready) por lo que detecta los cambios en los desplegables, pero cuando hago un submit del formulario, parace como si ya no volviera a estar ready, por lo que no detecta ningún cambio.

Gracias.


Buenooo!!! ya me he dado cuenta del error. Resulta que me faltaba include de jquery por lo que no se ejecutaba la segunda vez
__________________
Qué fácil cuando lo sabes y qué difícil cuando no

Última edición por mblascog; 18/10/2014 a las 15:15

Etiquetas: detecta, evento, primera, vez
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 06:43.