Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/03/2011, 02:07
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: Jquery Datepicker desactivar periodos de fechas

Cita:
Iniciado por marlanga Ver Mensaje
1-La fecha es obvia, formato inglés: 2009-10-19; 19 de octubre de 2009. Los meses y dias menores de 10 hay que poner el cero delante. Ejemplo, 2 de enero de 2011: "20110102", respetando ese mismo formato.
2-No conoces el prototype de javascript... Bueno.
Dentro de la declaración del datepicker:
beforeShowDay: function(dateToShow){
return [($.inArray($.datepicker.formatDate('yymmdd', dateToShow),dateList) >= 0), ""];
}

Esto equivale a:
function beforeShowDay(dateToShow){
return [($.inArray($.datepicker.formatDate('yymmdd', dateToShow),dateList) >= 0), ""];
}
Pero hay que usar la forma de prototype, porque así funciona jQuery (creando objetos, programación más o menos orientada a objetos en javascript).

Espero que así lo veas mas claro. Dateshow es un argumento que se le pasa a la función, pero puedes ponerle el nombre que quieras. Sólo tienes que mirar la documentación del datepicker para mirar cuántos argumentos serán enviados a la función "beforeShowDay". En este caso, sólo uno, el día de la fecha que va a analizar si pintar como elegible o no. Como ya dije, esa función, como dice la documentación del datepicker, se ejecutará una vez por cada día que haya en el rango de fechas que hayas definido al crear el datepicker.
Ya lo he solucionado de un modo parecido pero de todas formas mil gracias por tus explicaciones ; es cierto que la fecha era obvia (pero será el cansancio pero no la vi :().
Lo de Prototype no lo sabia, no se si antes lo dije pero programo en PHP , el javascript casi lo hago por intuición , de ahí los problemas que me van surgiendo , supongo que algún dia aprenderé.

A continuación expondré la solución que hayé después de leer unos cuantos foros y posibles soluciones:
Voila ¡¡¡

El rango de fechas que queremos deshabilitar
Código:
var disabledDays = new Array();
//nota: ano es una variable dinámica que varía según el año en el que nos encontremos
var disabledDays = ["06-16-"+ano,"06-17-"+ano,"06-18-"+ano,"06-19-"+ano,"06-20-"+ano,"06-21-"+ano,"06-22-"+ano,"06-23-"+ano,"06-24-"+ano,"06-25-"+ano,"06-26-"+ano]
Mi calendario
Código:
$("#campofecha4").datepicker({

    showAnim: 'fadeIn',
   showOn: 'both',
   buttonImage: 'calendar.png',
   buttonImageOnly: true,
   minDate: new Date(<?php echo $ano?>,<?php echo $mes?>,<?php echo $diames?>),
    maxDate:'+365d',
   changeYear: true,
   numberOfMonths: 2,
   beforeShowDay: checkAvailability

   
	});
La función checkAvailability
Código:
function checkAvailability(mydate){
var $return=true;
var $returnclass ="available";    //formato mes dia y año (se puede cambiar pero también en array
$checkdate = $.datepicker.formatDate('mm-dd-yy', mydate); //dateFormat: 'mm/mm/yy',

for(var i = 0; i < disabledDays .length; i++)
{
if(disabledDays [i] == $checkdate)
{
$return = false;
$returnclass= "unavailable";
}
}
return [$return,$returnclass];
}
Gracias a tod@s.
Un saludo
__________________
Videotutoriales de Drupal