Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con DHTML Calendar

Estas en el tema de Problema con DHTML Calendar en el foro de Frameworks JS en Foros del Web. Buenas tardes!! Tengo implementado en mi aplicación este bonito calendario en javascript. Funciona a las mil maravillas pero ahora me ha surgido un añadido que ...
  #1 (permalink)  
Antiguo 03/02/2011, 06:10
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Problema con DHTML Calendar

Buenas tardes!!
Tengo implementado en mi aplicación este bonito calendario en javascript.
Funciona a las mil maravillas pero ahora me ha surgido un añadido que no sé si podré hacer.

El calendario se compone, como muchos sabeis, de un campo de texto(donde se copiará la fecha seleccionada) y una imágen que hace de disparador del calendario.
La función que controla ésto es la siguiente:
Código Javascript:
Ver original
  1. Calendar.setup({
  2.         trigger    : "nombre del disparador",
  3.         inputField : "nombre del campo de texto",
  4.         dateFormat: "%d/%m/%Y",
  5.         onSelect: function(cal) { cal.hide() }
  6.     });
El calendario lo tengo puesto que se carge con un onload en la imágen que hace de llamador y ésto no me da ningún problema.

Ahora, el problema está en que quiero copiar la fecha que selecciono en otro inputField a parte del que recoge la información. O sea, en 2 input a la vez.

He probado un poco de todo con varios eventos... onChange, onSelect.... y lo único que me funciona es con el evento onClick en el segundo campo. Pero eso no es intuitivo y es un requisito máximo.
Por cierto, he creado una función para que recoja el valor del input primero y lo copie en el segundo y esta es la función a la que quiero llamar.
O puedo crear directamente la función en el calendar.setup??

Gracias!!
  #2 (permalink)  
Antiguo 03/02/2011, 07:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Problema con DHTML Calendar

Deberias dar alguna referencia al calendar que estas usando, pero el lugar para hacer lo que necesitas es en onSelect, que probaste y no te funciono ? porque seria simplemente acceder al valor del input del calendario y setear este valor en el otro input.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 03/02/2011, 07:40
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Poner onSelect en la mismo función que genera los eventos del calendario es toda una odisea. Me da fallos de sintaxis por todas partes.
Le añado un onSelect después del primero y me dice que le falta v} después del argumento...
  #4 (permalink)  
Antiguo 03/02/2011, 08:02
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Problema con DHTML Calendar

Que calendario es ?, no tiene una url para poder verlo ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 04/02/2011, 02:22
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Hola masterpuppet.
Es el DHTML Calendar, puedes verlo en su página
http://www.dynarch.com/projects/calendar/
Visualmente es una pasado, pero en tema de programación es bastante complicado.
Además de el problema que expongo aquí me gustaría estudiar la manera de acotar por un rango de fechas para poder seleccionar(antes de, después de o entre).
Gracias por tu respuesta y un saludo.
  #6 (permalink)  
Antiguo 05/02/2011, 06:40
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Problema con DHTML Calendar

Mmmmm va en el onSelect, algo asi:

Código Javascript:
Ver original
  1. Calendar.setup({
  2.     trigger    : "c_trigger",
  3.     inputField : "c_field",
  4.     dateFormat: "%d/%m/%Y",
  5.     onSelect: function() {
  6.       var o = document.getElementById(this.args.inputField);
  7.       var d = document.getElementById('destination');
  8.       d.value = o.value;           
  9.       this.hide()
  10.     }
  11. });

y con respecto a rangos de fecha, esta en la documentacion, podes utilizar min, max y un callback para decidir si la fecha es seleccionable o no.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 05/02/2011, 17:15
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Muchas gracias masterpuppet. Me ha funcionado perfectamente.
Saludos!!
  #8 (permalink)  
Antiguo 05/02/2011, 17:20
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Ahora me faltan un par de cosillas, también con referencia a este calendario.
Podría hacer que sólo se pudiera seleccionar a partir de una fecha dada o hasta una fecha dada o en in intervalo entre fechas??
Gracias por la ayuda.
  #9 (permalink)  
Antiguo 05/02/2011, 17:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Problema con DHTML Calendar

Que tal aniMAYtions, como te comente antes, esta en la documentación, si ves que no te sale, postea el código que tengas y lo resolvemos.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 05/02/2011, 17:51
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Hola masterpuppet.
He leido y releido la documentación del calendario y de verdad no he encontrado nada. Pero mañana volveré a echar un vistazo y ya os contaré si he hallado la solución.
Gracias!!
  #11 (permalink)  
Antiguo 08/02/2011, 14:03
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Primero hola a tod@s.

Bueno, parece que he encontrado la solución, pero no sé cómo ajustarla correctamente a mi función.
Yo por ejemplo quiero que sólo se pueda elegir una fecha a partir de hoy. Para eso calcula la fecha actual con php y le doy formato
Código PHP:
Ver original
  1. $fecha_actual = date("Y-m-d");
  2.     list($anio, $mes, $dia) = explode("-", $fecha_actual);
  3.     $factual = $anio.$mes.$dia;
Y $factual lo meto en un input hidden para luego recogerlo desde la función que me carga el calendario
Código Javascript:
Ver original
  1. function cargaCalendarVolante()
  2. {
  3. var fechamin = document.getElementById('dateact');
  4.       Calendar.setup({
  5.           trigger    : "calconfirmaini",
  6.           inputField : "finivolante",
  7.           dateFormat: "%d/%m/%Y",
  8.           cont: "calconfirmaini",
  9.             min: fechamin,
  10.           onSelect: function(cal)
  11.           {
  12.             var o = document.getElementById(this.args.inputField);
  13.             var d = document.getElementById('ffinvolante');
  14.             d.value = o.value;
  15.             this.hide()
  16.           }
  17.       });
  18.    
  19. };
He comprobado que la fecha llega correctamente pero luego no coge la variable y puedo seleccionar la que yo quiera. Además el this.hide sólo me funciona si selecciono una fecha, no cuando pincho en cualquier lado de la pantalla como antes.

Gracias de nuevo!!
  #12 (permalink)  
Antiguo 08/02/2011, 16:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Problema con DHTML Calendar

Los problemas que estas teniendo seguramente son porque al fallar el js "rompe" el calendario, porque tomas la fecha de PHP ? no te sirve la de js ?, igual te comento que al calendario en la opción min le deberias pasar un objeto Date o un string, le estas pasando un HTMLElement, deberia ser algo asi:

Código Javascript:
Ver original
  1. var fechamin = document.getElementById('dateact').value;

igual creo que seria mejor crear la fecha en js, podria ser algo asi:
Código Javascript:
Ver original
  1. function cargaCalendarVolante()
  2. {    
  3.     Calendar.setup({
  4.         trigger    : "calconfirmaini",
  5.         inputField : "finivolante",
  6.         dateFormat: "%d/%m/%Y",
  7.         cont: "calconfirmaini",
  8.         min: new Date(),
  9.         onSelect: function() {
  10.             var o = document.getElementById(this.args.inputField);
  11.             var d = document.getElementById('ffinvolante');
  12.             d.value = o.value;
  13.             this.hide()
  14.           }
  15.     });    
  16. };
__________________
http://es.phptherightway.com/
thats us riders :)
  #13 (permalink)  
Antiguo 09/02/2011, 07:16
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Problema con DHTML Calendar

Hola masterpuppet.
Gracias de nuevo por tu interés.

Sí, así funciona genial pero sigue sin ocultarme el calendario cuando pincho fuera del campo, o sea, que me obliga a elegir una fecha una vez pulsado el disparador. No hace el this..hide().
Puedes decirme cómo podría seguir ocultando el div desde la misma función??

Saludos!!

Etiquetas: dhtml, calendario
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 09:59.