Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Guardar en variable despues de seleccionar en option select

Estas en el tema de Guardar en variable despues de seleccionar en option select en el foro de Javascript en Foros del Web. Hola amigos, tengo este formulario de cotizacion: http://vamonosdevacaciones.com.ve/cotizacion.php y en la parte 1 cuando se escoge la posada y el plan, necesito almacenar los datos ...
  #1 (permalink)  
Antiguo 07/03/2013, 08:29
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Pregunta Guardar en variable despues de seleccionar en option select

Hola amigos, tengo este formulario de cotizacion:

http://vamonosdevacaciones.com.ve/cotizacion.php

y en la parte 1 cuando se escoge la posada y el plan, necesito almacenar los datos que el cliente selecciona en una variable javascript para luego asignar a variable php y consultar la base de datos.

El problema es que como los option select se llenan dinamicamente no se como capturar lo que el usuario selecciona. Este es el código de esa parte:

Código HTML:
Ver original
  1. <legend>1. Plan:</legend>
  2.            <label for="input-one" class="float"><strong>Posada:</strong></label>
  3.            <label>
  4.             <?php
  5.             $consulta='select * from px';
  6.             $resultado=mysql_query($consulta,$conn);
  7.             echo "
  8.             <select class='float' name='select1' id='select1'>";
  9.                 while($fila=mysql_fetch_array($resultado)){
  10.                   echo "
  11.                      <option value='".$fila['id_posada']."'>".$fila['nombre_posada']."
  12.                      </option>";
  13.            }
  14.         ?> </select></label>          
  15.         <label for="input-two" class="float"><strong>Plan:</strong></label>
  16.         <label>
  17.         <select class="inp-text" name="select2" id="select2" >
  18.           <option value="0">Seleccionar... </option>
  19.           </select>
  20.         </label>

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2. $(document).ready(function(){
  3.                 $("#select1").change(function(event){
  4.                     var id = $("#select1").find(':selected').val();
  5.                     $("#select2").load('genera-select.php?id='+id);
  6.                 });

Código PHP:
Ver original
  1. $conn = db_connect();
  2.   if (!$conn)
  3.    return 0;
  4.  
  5.     $consulta = "SELECT * from plan WHERE id_posada = ".$_GET['id'];
  6.     $query = mysql_query($consulta, $conn)or die(mysql_error());
  7.     while ($fila = mysql_fetch_assoc($query)) {
  8.         echo '<option value="'.$fila['id_plan'].'">'.$fila['nombre_plan'].'</option>';
  9.     };

Les agradezco mucho su ayuda.
__________________
Caminando con el corazón partío
  #2 (permalink)  
Antiguo 07/03/2013, 08:39
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Guardar en variable despues de seleccionar en option select

Para empezar, esto

Fecha y hora: 07/03/2013 11:35:58
Error: SyntaxError: syntax error
Archivo de origen: http://vamonosdevacaciones.com.ve/cotizacion.php
Línea: 357, columna: 17
Código fuente:
var desde_plan= ; // Quita las comillas para que sea un entero
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 07/03/2013, 08:55
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Si, es una funcion que voy a utilizar pero lo que quiero resolver es capturar lo que el usuario selecciona en la primera parte para que despues esa funcion pueda servir.
__________________
Caminando con el corazón partío
  #4 (permalink)  
Antiguo 07/03/2013, 12:39
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Hola, agregué esto:

Código HTML:
Ver original
  1. <label class="letra">Este plan está disponible para fechas:</label>
  2.         <label for="input-two" class="float"><strong>Desde:</strong></label>
  3.  
  4.         <label><select class="letra" name="select7" id="select7" readonly onChange="capturar()" >
  5.             <option value="0"></option>
  6.             </select></label>
  7.  
  8.     <label for="input-two" class="float"><strong>Hasta:</strong></label>
  9.  
  10.         <label><select class="letra" name="select8" id="select8" readonly >
  11.             <option value="0"></option>
  12.             </select></label>

con estas funciones:

Código Javascript:
Ver original
  1. $("#select2").change(function(event){
  2.                     var id_plan = $("#select2").find(':selected').val();
  3.                     // ???? insertas una pagina en un <select> </select>
  4.                     $("#select7").load('genera-opciones.php?id_plan='+id_plan);
  5.                 });
  6.  
  7.                 $("#select2").change(function(event){
  8.                     var id_plan = $("#select2").find(':selected').val();
  9.                     // ???? insertas una pagina en un <select> </select>
  10.                     $("#select8").load('genera-opciones2.php?id_plan='+id_plan);
  11.                 });

para que me trajera los datos que necesito guardar en las variables javascript y probé esto, pero no funciona:

Código PHP:
Ver original
  1. <script>
  2. function capturar(){
  3. var desde = document.getElementById("select7").value;
  4. //alert(desde);
  5. var hasta = document.getElementById("select8").value;
  6. }
  7. </script>
  8. <?php
  9. $variablephp1 = "<script> document.write(desde) </script>";
  10. echo "variablephp1 = $variablephp1";
  11. echo '<br>';
  12. $variablephp2 = "<script> document.write(hasta) </script>";
  13.  
  14. echo "variablephp2 = $variablephp2";
  15. ?>

Se que me falta algo con el evento onchange en el select7 y select8 pero no se como hacerlo. Por favor me pueden explicar porque he estudiado el DOM, javascript y ajax y no se como hacer esto....

Gracias
__________________
Caminando con el corazón partío
  #5 (permalink)  
Antiguo 07/03/2013, 17:25
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Por favor diganme si mi pregunta no se entiende o algo.... de verdad necesito ayuda para aprender a hacer esto.

Gracias,
__________________
Caminando con el corazón partío
  #6 (permalink)  
Antiguo 07/03/2013, 17:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Guardar en variable despues de seleccionar en option select

Para enviar valores de esa forma, tendrás que usar AJAX.
  #7 (permalink)  
Antiguo 07/03/2013, 17:37
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Gracias walterdevel, estuve leyendo ajax pero como estoy super desesperada no entiendo mucho
__________________
Caminando con el corazón partío
  #8 (permalink)  
Antiguo 07/03/2013, 17:46
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Guardar en variable despues de seleccionar en option select

Te paso un ejemplo de como sería aproximadamente, más que esto no te puedo ayudar:

Código Javascript:
Ver original
  1. var desde = $("#select7").val();
  2.  
  3. var hasta = $("#select8").val();
  4.  
  5. $.ajax({        
  6.  
  7. url: "ajax.php",
  8. type: "POST",
  9. data: {
  10.     hasta_var: hasta,
  11.     desde_var: desde,
  12. },
  13. timeout: 30000,
  14. contentType : "application/x-www-form-urlencoded; charset=utf-8",
  15. dataType: "html",
  16. beforeSend: function() {  
  17.    alert('ENVIANDO');
  18. },
  19. success: function(data, textStatus, jqXHR) {
  20.    alert('SE ENVIO CORRECTAMENTE');
  21. },
  22. error: function(jqXHR, textStatus, errorThrown) {
  23.   alert('OCURRIO UN ERROR');
  24. }
  25. });

ajax.php

Código PHP:
Ver original
  1. <?php
  2. $desde = $_POST['desde_var'];
  3. $hasta = $_POST['hasta_var'];
  #9 (permalink)  
Antiguo 07/03/2013, 17:51
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Guardar en variable despues de seleccionar en option select

Cita:
Iniciado por kimmy Ver Mensaje
Gracias walterdevel, estuve leyendo ajax pero como estoy super desesperada no entiendo mucho
La desesperación no te va a llevar a nada, y te aclaro que ya estás usando Ajax.
load() de Jquery es Ajax.
y sigo viendo errores en tu javascript

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 07/03/2013, 18:01
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Mil Gracias walterdevel por tu valiosa ayuda. Analizare el código para aprenderlo, entenderlo y poder aplicarlo.

Gracias también emprear voy a revisar los errores, pero ese que me indicas es porque justamente no estoy recolectando la variable que me permite hacer la consulta en mysql para luego asignarla a var desde_plan= <?php echo $php_ini; ?>; (es asi como la uso).

Seguiré estudiando, lo que pasa es que ya tengo un año corrigiendo cosas en esta página y he aprendido algo de javascript, jquery y ajax a los trancazos.

Gracias a los dos.
__________________
Caminando con el corazón partío
  #11 (permalink)  
Antiguo 07/03/2013, 18:18
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Guardar en variable despues de seleccionar en option select

Cita:
Iniciado por kimmy Ver Mensaje
Mil Gracias walterdevel por tu valiosa ayuda. Analizare el código para aprenderlo, entenderlo y poder aplicarlo.

Gracias también emprear voy a revisar los errores, pero ese que me indicas es porque justamente no estoy recolectando la variable que me permite hacer la consulta en mysql para luego asignarla a var desde_plan= <?php echo $php_ini; ?>; (es asi como la uso).

Seguiré estudiando, lo que pasa es que ya tengo un año corrigiendo cosas en esta página y he aprendido algo de javascript, jquery y ajax a los trancazos.

Gracias a los dos.
Un error de sintáxis en javascript, aunque este en una función que aún no has de utilizar, puede invalidar el resto de tu javascript. Es más , en tu caso, los errores aparecen con la simple carga de la página. Por eso,lo primero antes de iniciar otra cosa es arreglar eso debidamente. aunque ello no implique de ninguna manera solucionar el problema puntual que mencionas.
Al momento

Fecha y hora: 07/03/2013 21:11:58
Error: ReferenceError: desde is not defined
Archivo de origen: http://vamonosdevacaciones.com.ve/cotizacion.php
Línea: 282

Fecha y hora: 07/03/2013 21:11:58
Error: ReferenceError: hasta is not defined
Archivo de origen: http://vamonosdevacaciones.com.ve/cotizacion.php
Línea: 282

Fecha y hora: 07/03/2013 21:11:59
Error: SyntaxError: syntax error
Archivo de origen: http://vamonosdevacaciones.com.ve/cotizacion.php
Línea: 383, columna: 17
Código fuente:
var desde_plan= ; // Quita las comillas para que sea un entero



Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 07/03/2013, 18:23
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Muchas gracias emprear, estaré solucionandolos.
__________________
Caminando con el corazón partío
  #13 (permalink)  
Antiguo 09/03/2013, 08:15
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Me voy a volver loca con esto.

Creo que no supe explicar mi duda.

Ya yo me traigo el valor de la consulta a mysql y lo muestra en un option select (porque no supe como mostrarlo en un input text). Se genera en el select llamado "desde (select7)" al seleccionar primero el select "posada (select1)" y luego el select "plan (select2)".

Entonces cuando se genere lo que quiero es meter ese dato en una variable javascript.

Este es el código del form:

Código HTML:
Ver original
  1. <legend>1. Plan:</legend>
  2.            <label for="input-one" class="float"><strong>Posada:</strong></label>
  3.            <label>
  4.             <?php
  5.             $consulta='select * from posadas';
  6.             $resultado=mysql_query($consulta,$conn);
  7.             echo "
  8.            
  9.             <select class='float' name='select1' id='select1'>";
  10.                 while($fila=mysql_fetch_array($resultado)){
  11.                   echo "
  12.                      <option value='".$fila['id_posada']."'>".$fila['nombre_posada']."
  13.                      </option>";
  14.            }
  15.             //echo "</select></label>";
  16.         ?> </select></label>          
  17.         <label for="input-two" class="float"><strong>Plan:</strong></label>
  18.         <label>
  19.         <select class="inp-text" name="select2" id="select2" >
  20.           <option value="0">Seleccionar... </option>
  21.           </select>
  22.         </label>
  23.         <label class="letra">Este plan está disponible para fechas:</label>
  24.         <label for="input-two" class="float"><strong>Desde:</strong></label>
  25.  
  26.         <label><select class="letra" name="select7" id="select7"  >
  27.             <option value="0"></option>
  28.             </select></label>
  29.  
  30.     <label for="input-two" class="float"><strong>Hasta:</strong></label>
  31.  
  32.         <label><select class="letra" name="select8" id="select8" >
  33.             <option value="0"></option>
  34.             </select></label>

este el javascript que genera los select:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.                 $("#select1").change(function(event){
  3.                     var id = $("#select1").find(':selected').val();
  4.                     $("#select2").load('genera-select.php?id='+id);
  5.                 });
  6.                
  7.                  $("#select2").change(function(event){
  8.                     var id_plan = $("#select2").find(':selected').val();
  9.                     // ???? insertas una pagina en un <select> </select>
  10.                     $("#select4").load('genera-text.php?id_plan='+id_plan);
  11.                 });
  12.                
  13.                
  14.  
  15.                 $("#select1").change(function(event){
  16.                     var id_hab = $("#select1").find(':selected').val();
  17.                     $("#select3").load('genera-select2.php?id_hab='+id_hab);
  18.                    
  19.                 });
  20.                
  21.                
  22.                 $("#select2").change(function(event){
  23.                     var id_plan = $("#select2").find(':selected').val();
  24.                     // ???? insertas una pagina en un <select> </select>
  25.                     $("#select5").load('genera-text2.php?id_plan='+id_plan);
  26.                 });
  27.  
  28.                 $("#select2").change(function(event){
  29.                     var id_plan = $("#select2").find(':selected').val();
  30.                     // ???? insertas una pagina en un <select> </select>
  31.                     $("#select6").load('genera-text3.php?id_plan='+id_plan);
  32.                 });
  33.                
  34.                 $("#select2").change(function(event){
  35.                     var id_plan = $("#select2").find(':selected').val();
  36.                     // ???? insertas una pagina en un <select> </select>
  37.                     $("#select7").load('genera-opciones.php?id_plan='+id_plan);
  38.                 });
  39.  
  40.                 $("#select2").change(function(event){
  41.                     var id_plan = $("#select2").find(':selected').val();
  42.                     // ???? insertas una pagina en un <select> </select>
  43.                     $("#select8").load('genera-opciones2.php?id_plan='+id_plan);
  44.                 });
  45.  
  46.  
  47.         });

y este es el php donde me trae el valor del select "desde (select7)":

Código PHP:
Ver original
  1. $conn = db_connect();
  2.   if (!$conn)
  3.    return 0;
  4.  
  5.     $consulta = "SELECT * from pl WHERE id_plan =".$_GET['id_plan'];
  6.     $query = mysql_query($consulta, $conn)or die(mysql_error());
  7.     while ($result = mysql_fetch_array($query)) {
  8.     $desde = $result['desde'];
  9.  
  10.        $desde1= date("d-m-Y",strtotime($desde));
  11.         echo "<option value='".$desde1."'>".$desde1." </option>";
  12.     }

Este es el link a el formulario:

http://vamonosdevacaciones.com.ve/cotizacion.php

Por favor, solo quiero guardar eso en una variable javascript. Tengo días leyendo y no se como.

Gracias.
__________________
Caminando con el corazón partío
  #14 (permalink)  
Antiguo 09/03/2013, 10:44
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Por favor respondan...

Logré obtenerlo asi, pero me muestra es el anterior. Por ejemplo al inicio cuando escojo la posada y el plan me muestra 0 y luego vuelvo a escoger posada y plan y me muestra la fecha del anterior en el alert. Como hago para que tome la que se está escogiendo???

Lo hice asi:

Código Javascript:
Ver original
  1. $("#select2").change(function(event){
  2.                     var id_plan = $("#select2").find(':selected').val();
  3.                     // ???? insertas una pagina en un <select> </select>
  4.                     $("#select8").load('genera-opciones2.php?id_plan='+id_plan);
  5.                     var valor = document.form1.select8.value;
  6.                     alert(valor);
  7.  
  8.                 });
__________________
Caminando con el corazón partío
  #15 (permalink)  
Antiguo 09/03/2013, 20:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar en variable despues de seleccionar en option select

Supongo que como estás generando por AJAX las opciones del select, éstas tardan más tiempo en cargarse que la alerta en aparecer.

En todo caso, no deberías preocuparte mucho por eso, más bien, ve buscando la forma de validar los selectores de llegada y salida, esta última podría/debería ser calculada automáticamente?
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 09/03/2013, 21:07
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Yo necesito desde y hasta que son las fechas dentro de las cuales esta previsto el plan y esas fechas vienen desde la base de datos y son las que muestro en esos select(listas). El usuario debe escoger una fecha de llegada y automaticamente se generara un fecha de salida según la cantidad de noches que tiene el plan. Pero para aplicar la funcion que muestra esto, tengo que conocer el desde y hasta. Esta es la funcion que calcula la fecha de salida y valida:

Código Javascript:
Ver original
  1. function calcular(){
  2.    
  3. var n_noches =  document.form1.select5.value;
  4. var from = $('#datepicker_1');          
  5. var to = $('#datepicker_2');          
  6. var diferencia = $('#diferencia');
  7. var fromDate = from.datepicker('getDate');
  8.     var desde = "<?php echo $desde2; ?>";
  9.     var hasta = "<?php echo $hasta2; ?>";
  10.        
  11.     var desde_plan= <?php echo $php_ini; ?>; // Quita las comillas para que sea un entero
  12.     var hasta_plan= <?php echo $php_fin; ?>; // Igual aquí
  13.  
  14.  
  15.     // Yo preferiría buscar por id, por compatibilidad entre navegadores
  16.     var llegada1 = document.getElementById('datepicker_1').value;
  17.    // Y ya que estás usando jquery, puedes hacerlo así:
  18.        
  19.     var llegadas = llegada1.split("/");
  20.  
  21.     var ano =llegadas[0];
  22.     var mes =llegadas[1];
  23.     var dia =llegadas[2];
  24.  
  25.     var fecha1 = dia+"/"+mes+"/"+ano;
  26.  
  27.     var js_ini = new Date(fecha1).getTime()/1000;
  28.     // Compruebas si los números a comparar están correctos
  29.         if(js_ini < desde_plan || js_ini > hasta_plan) {
  30.         //alert("Has escrito: " + $("#TextBox1″).val());
  31.         alert('Fecha seleccionada fuera de rango, seleccionar fechas entre '+ desde +' hasta ' + hasta);
  32.         document.getElementById('salida').value = 0;
  33.  
  34.         }
  35.         else{
  36. var suma = parseInt(n_noches);
  37.  
  38.  
  39. fromDate.setDate(fromDate.getDate() + suma);
  40.  
  41. var anio = fromDate.getFullYear();
  42. var mes1 = fromDate.getMonth()+1;
  43. var dia1 = fromDate.getDate();
  44.  
  45. if(mes1.toString().length<2){
  46.   mes1="0".concat(mes1);      
  47. }  
  48.  
  49. //Si la longitud de digitos es menor a 2
  50. //entonces le agregamos el cero a la izquierda.
  51. if(dia1.toString().length<2){
  52.   dia1="0".concat(dia1);      
  53. }
  54.  
  55.     var fechando = dia1+"/"+mes1+"/"+anio;
  56.    
  57.     document.getElementById('salida').value = fechando;
  58.     }
  59. }

Lo que necesito es guardar en una variable ese desde y hasta que se obtuvo segun la posada y el plan que selecciona el usuario para usarlos en la función.

????
__________________
Caminando con el corazón partío
  #17 (permalink)  
Antiguo 09/03/2013, 23:40
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Guardar en variable despues de seleccionar en option select

seguimos en lo mismo

Código:
	
var desde_plan= ; // Quita las comillas para que sea un entero
var hasta_plan= ; // Igual aquí


    // Yo preferiría buscar por id, por compatibilidad entre navegadores
	var llegada1 = document.getElementById('datepicker_1').value;
   // Y ya que estás usando jquery, puedes hacerlo así:
       
	var llegadas = llegada1.split("/");

	var ano =llegadas[0];
	var mes =llegadas[1];
	var dia =llegadas[2];

	var fecha1 = dia+"/"+mes+"/"+ano;

    var js_ini = new Date(fecha1).getTime()/1000;
    // Compruebas si los números a comparar están correctos
		if(js_ini < desde_plan || js_ini > hasta_plan) {
		//alert("Has escrito: " + $("#TextBox1″).val());
        alert('Fecha seleccionada fuera de rango, seleccionar fechas entre '+ desde +' hasta ' + hasta);
		document.getElementById('salida').value = 0;

var desde_plan y var hasta_plan no generan ningún valor y posteriormente los utilizás para hacer una comparación.
Que se supone que son
Código:
    var desde_plan= <?php echo $php_ini; ?>; // Quita las comillas para que sea un entero
    var hasta_plan= <?php echo $php_fin; ?>; // Igual aquí
Y he visto unos cuantos errores más

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #18 (permalink)  
Antiguo 10/03/2013, 02:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar en variable despues de seleccionar en option select

Creo que primero debes atender las sugerencias de emprear para poder avanzar.

En cuanto a "desde" y "hasta" que no aparecen en el alert, insisto en que no deberías preocuparte, los valores se están cargando correctamente y, tienes dos opciones:

1- Al finalizar la carga de esos valores, debes usar un método de jquery, no recuerdo cuál es, pero se activa cuando finaliza la llamada AJAX y es ahí donde puedes hacer el alert o asignar los valores inicial y final para los datepickers

2- Cuando los datepickers obtengan el foco, tomar los valores de "desde" y "hasta"... lo cual me pareca mucho más sencillo

Tú eliges cual opción intentar, pero, insisto, primero haz caso de las sugerencias que ya te hicieron.
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 10/03/2013, 09:34
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Hola, gracias por la ayuda de ambos pero claro que estan vacios esos datos en la funcion calcular porque son los que no logro guardar (desde y hasta) que ya los tengo pero me muestra es el anterior. Por ejemplo al inicio cuando escojo la posada y el plan me muestra 0 y luego vuelvo a escoger posada y plan y me muestra la fecha del anterior en el alert. Coloque el alert para ver que trae.

Ya quité la función calcular().

Lo que necesito es guardar desde que es el select7 y hasta que es el select8 que son las fechas dentro de las cuales esta previsto el plan y esas fechas vienen desde la base de datos y son las que muestro en esos select(listas).

Les adjunto la imagen de los select con los datos que trae y los que quiero guardar en variables



????
__________________
Caminando con el corazón partío
  #20 (permalink)  
Antiguo 10/03/2013, 19:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar en variable despues de seleccionar en option select

Kimmy, realmente no es necesario guardar esos valores en una variable, como te decía en el mensaje anterior, es más sencillo que uses onfocus en los dos datepickers para leer los valores "desde" y "hasta".
__________________
- León, Guanajuato
- GV-Foto
  #21 (permalink)  
Antiguo 10/03/2013, 20:06
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Triby no me entiendes, esos select no son datepicker. Solo uso un datepicker en fecha de llegada y no tiene nada que ver con lo que quiero de los otros. Los datos que están en los select 7 y 8 vienen de la consulta, no tienen que escogerse los coloco alli para poder guardarlos en las variables javascript que usaré después.

Desde y hasta no es lo mismo que fecha de llegada y fecha de salida son otros por un plan puede tener un desde 07/03/2013 hasta 25/12/2013 y en cambio las fechas de llegada y salida son las que se engloban dentro de las noches del plan. Por ejemplo 4 noches. Son cosas totalmente distintas.

No uso datepicker en desde y hasta solo uso un select en donde muestro la consulta a la tabla segun la posada y plan seleccionado.

No se como explicarles esto
__________________
Caminando con el corazón partío
  #22 (permalink)  
Antiguo 10/03/2013, 20:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar en variable despues de seleccionar en option select

Por supuesto que te entiendo, los select son llenados por medio de la llamada AJAX y tienen como finalidad establecer las fechas límite que después debes seleccionar en los datepickers y me queda bastante claro que los datepickers no pueden tener fechas de llegada previas a "desde" ni salida posteriores a "hasta".

Tú eres quien no ha entendido que los valores "desde" y "hasta" no son importantes mientras los datepickers no tengan el foco o no se haya enviado el formulario que, cuando eso pase, el AJAX donde cargas los selectores ya debe haber finalizado y podrás realizar la consulta necesaria para establecer límites actuales y reales en los datepickers y/o realizar una validación.
__________________
- León, Guanajuato
- GV-Foto
  #23 (permalink)  
Antiguo 10/03/2013, 20:29
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Ok, ya te entiendo pero como hago llegar ese desde y hasta a la funcion calcular que es esta:

Código Javascript:
Ver original
  1. function calcular(){
  2.    
  3. var n_noches =  document.form1.select5.value;
  4. var from = $('#datepicker_1');          
  5. var diferencia = $('#diferencia');
  6. var fromDate = from.datepicker('getDate');
  7.     var desde_plan = "SELECT7";
  8.     var hasta_plan = "SELECT8";
  9.        
  10.      // Yo preferiría buscar por id, por compatibilidad entre navegadores
  11.     var llegada1 = document.getElementById('datepicker_1').value;
  12.    // Y ya que estás usando jquery, puedes hacerlo así:
  13.        
  14.     var llegadas = llegada1.split("/");
  15.  
  16.     var ano =llegadas[0];
  17.     var mes =llegadas[1];
  18.     var dia =llegadas[2];
  19.  
  20.     var fecha1 = dia+"/"+mes+"/"+ano;
  21.  
  22.     var js_ini = new Date(fecha1).getTime()/1000;
  23.     // Compruebas si los números a comparar están correctos
  24.         if(js_ini < desde_plan || js_ini > hasta_plan) {
  25.         //alert("Has escrito: " + $("#TextBox1″).val());
  26.         alert('Fecha seleccionada fuera de rango, seleccionar fechas entre '+ desde +' hasta ' + hasta);
  27.         document.getElementById('salida').value = 0;
  28.  
  29.         }
  30.         else{
  31. var suma = parseInt(n_noches);
  32.  
  33.  
  34. fromDate.setDate(fromDate.getDate() + suma);
  35.  
  36. var anio = fromDate.getFullYear();
  37. var mes1 = fromDate.getMonth()+1;
  38. var dia1 = fromDate.getDate();
  39.  
  40. if(mes1.toString().length<2){
  41.   mes1="0".concat(mes1);      
  42. }  
  43.  
  44. //Si la longitud de digitos es menor a 2
  45. //entonces le agregamos el cero a la izquierda.
  46. if(dia1.toString().length<2){
  47.   dia1="0".concat(dia1);      
  48. }
  49.  
  50.     var fechando = dia1+"/"+mes1+"/"+anio;
  51.    
  52.     document.getElementById('salida').value = fechando;
  53.     }
  54. }

Gracias y disculpa mi ignorancia...
__________________
Caminando con el corazón partío
  #24 (permalink)  
Antiguo 10/03/2013, 22:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar en variable despues de seleccionar en option select

Código PHP:
Ver original
  1. // Tan sencillo como esto:
  2. var desde = $('#select7').value;
  3. var hasta = $('#select8').value;

Lógicamente, vas a necesitar convertir esos valores a un tipo de dato que te permita comparar, supongo que lo ideal sería un objeto de fecha, pero mis conocimientos en javascript no son muy buenos en el tema... de hecho, no sé gran cosa de javascript.
__________________
- León, Guanajuato
- GV-Foto
  #25 (permalink)  
Antiguo 10/03/2013, 23:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Guardar en variable despues de seleccionar en option select

Durante mi, extensa creo, participación en el foro, me he encontrado me he encontrado con preguntas y códigos, a los cuales solo la intuición, podía darles un caracter lógico. Asi y todo, y disculpame la franqueza @kimmy, no tengo ni idea de cual es el problema, ni si es de php, ó de js, más bien diría, que ni siquiera llego a interpretar cual es el objetivo puntual a resolver. He leido y releído todo el post varias veces, haciendo incapié en los mensajes de @Triby a ver si por ese lado se me hacía la luz, pero ni aún asi.

Si aislamos algunas ideas, la cosa parece fácil

identificar un campo de formulario, no hay problema
hacer del su valor de dicho campo una variable suceptible de ser enviada mediante ajax, no hay problema
transformar el valor de un campo que representa una fecha, a una fecha válida de javascript, para luego hacer una comparación, no hay inconveniente.
A una fecha dada sumar un número de días, es simple

Ahora, que si sumo todo eso y me encuentro con esto



La cosa cambia. Para conseguir esa imagen, hay que hacer una secuencia determinada, y pregunto una vez más, con eso que se obtiene, que hay que hacer.

Y agrego (si ya sé que soy repetitivo)
un datepicker que no se usa????
2 versiones de la librería jQuery cargadas???
variablephp1 = <script> document.write(valor) </script><br>???? variables sin definir
Unos cuantos errores de html (incluyendo el html generado por php).
Yo entiendo que jQuery es bastante permisivo con ciertas cosas, pero todo lo previo me deja en la duda si lo que están mal son tus funciones, o jQuery y Javascript, dijeron "hasta aquí llego yo"

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #26 (permalink)  
Antiguo 11/03/2013, 16:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar en variable despues de seleccionar en option select

Primero corrige tu HTML, empezamos con sólo un datepicker, pero necesitas revisar toda tu página:
--- El el for de cada label debes especificar la ID del campo al que pertenece, si hacen click en el label, el campo toma el foco
--- No es necesario (ni recomendable) tener <label><input /></label>
--- Los atributos name, onchange, onfocus, onblur, etc., de las etiquetas html son en minúsculas
-- La forma correcta de agregar un script es todo en minúsculas y especificando sólo el tipo, porque language ya es obsoleto: <script type="text/javascript"></script>

Como ejemplo de lo anterior y para resolver tu problema:

1- Agregas el atributo onfocus al datepicker, para que cuando el usuario ingrese a ese campo, tome los valores de fecha mínima y máxima desde select7 y select8 ("desde" y "hasta").

Código HTML:
Ver original
  1. <label for="datepicker_1" class="floflo"><strong>Llegada:</strong></label>
  2.     <input type="text" id="datepicker_1" name="llegada" class="datepicker" onfocus="datepickers_init();" onchange="calcular();" />

Debes hacer lo mismo para el segundo datepicker (si es que lo vas a usar)

2- Elimina la función de inicialización automática de los datepickers, realmente no es útil al cargar la página, porque no se ha seleccionado posada y plan, es decir, quita todo el bloque siguiente.

Código HTML:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2. $(document).ready(function()
  3. {
  4.        
  5.    $("#datepicker").datepicker();
  6.    
  7.     }
  8. );
  9. $(function(){
  10.         var pickerOpts = {
  11.             minDate: new Date()
  12.         }; 
  13.         $("#datepicker_1").datepicker(pickerOpts);
  14.     });

3- Agrega la función para cargar opciones de los datepickers cuando el usuario seleccione cualquiera de los dos

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. function datepickers_init () {
  3.     var pickerOpts = {
  4.         minDate: new Date($('#select7').value),
  5.         maxDate: new Date($('#select8').value),
  6.     };
  7.     $("#datepicker_1").datepicker(pickerOpts);
  8.  
  9.         // Si vas a usar el segundo datepicker
  10.         // No necesitas crear otras opciones, son las mismas del anterior
  11.     $("#datepicker_2").datepicker(pickerOpts);
  12. }

4- La recomendación más importante es: Limpia tu código, porque me parece que vas dejando cosas que probaste y luego ya no usas (HTML y Javascript).
--- Ya que tienes jQuery, como bien te sugirió emprear, deja de usar document.getElementById('id_de_elemento') y, en su lugar, usa $('#id_de_elemento')

Finalmente, creo que estás en el mismo caso de hace un tiempo, desesperándote y queriendo avanzar rápido y eso no te deja ver que la solución puede ser un poco menos complicada de lo que parece y te desesperas más.

Tú puedes lograrlo, ya lo has demostrado muchas veces, solo necesitas un poco de paciencia y despejarte un poco.
__________________
- León, Guanajuato
- GV-Foto
  #27 (permalink)  
Antiguo 12/03/2013, 18:23
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar en variable despues de seleccionar en option select

Muchas gracias Triby y Emprear. Ya logré que funcionara. Les agradezco mucho su ayuda porque me enredo un mundo con javascript y jquery y mucho mas con ajax. He estado limpiando el código lo más que puedo pero hay cosas que elimino y luego no me funcionan otras ....

Definitivamente, en lo que tenga un tiempo voy a hacer cursos de los 3 porque me tienen loca y me ha costado asimilarlos.

Gracias nuevamente...
__________________
Caminando con el corazón partío
  #28 (permalink)  
Antiguo 12/03/2013, 18:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Guardar en variable despues de seleccionar en option select

Cita:
Iniciado por kimmy Ver Mensaje
Muchas gracias Triby y Emprear. Ya logré que funcionara. Les agradezco mucho su ayuda porque me enredo un mundo con javascript y jquery y mucho mas con ajax. He estado limpiando el código lo más que puedo pero hay cosas que elimino y luego no me funcionan otras ....

Definitivamente, en lo que tenga un tiempo voy a hacer cursos de los 3 porque me tienen loca y me ha costado asimilarlos.

Gracias nuevamente...
Bien por la perseverancia !!!
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: formulario, input, option, php, select, variable
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 14:26.