Bloquer les jours d'un calendrier

silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010 - 31 août 2010 à 22:34
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 3 sept. 2010 à 08:30
Bonjour à tous,

J'ai intégré un calendrier (calendar.js) dans mon site pour la commande en ligne de plats préparés.

J'ai bloqué la date d'aujourd'hui si on dépasse 15h (ainsi que les jours passés)
J'aimerais pouvoir bloquer également le lendemain si on dépasse 15h.

voici mon code:

function getDateState(date)
{

   var currentDate = new Date();
   if( date.getDate() currentDate.getDate()  && date.getMonth() currentDate.getMonth() && date.getFullYear() == currentDate.getFullYear() )
      if(currentDate.getHours() >= 15)
      return true;
  else return false;
 
         
   
   if( date.getTime() < currentDate.getTime() )
      return true;
   else return false;
}

Calendar=function(firstDayOfWeek,dateStr,onSelected,onClose){

 this.getDateStatus = getDateState;

}


si quelqu'un peux me donner une solution svp...

bonne fin de journée


silas

11 réponses

silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
1 sept. 2010 à 15:18
je viens de me rendre compte que je me suis mal exprimé

en fait ce que j'aimerais, c'est pouvoir bloquer tous les jours passés ainsi qu'aujourd'hui, et bloquer demain si on dépasses 15h aujourd'hui.
0
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
1 sept. 2010 à 15:19
personne n'a même une petite idée?
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
1 sept. 2010 à 15:57
Bonjour,
tu te mélanges visiblement les pinceaux entre Date et Time, plus d'infos sur l'objet Date

tu peux résoudre ton problème le plus simplement possible en faisant, l'objet Date supporte les opérations arithmétiques.
//-- Recup Today
var ToDay = new Date();
var Jour  = ToDay.getDate();
var Mois  = ToDay.getMonth();
var Annee = ToDay.getFullYear();

//-- Init dates butees
var D_Mini = new Date ( Annee, Mois, Jour,    15, 0, 0);  // Ce jour a 15h
var D_Maxi = new Date ( Annee, Mois, Jour +1, 15, 0, 0);  // Demain a 15h

//-- Test entre les dates
if( (ToDay > D_Mini) && (ToDay < D_Maxi)){
  alert( 'Dans DELAI...');
}
else{
  alert( 'Hors DELAI !!!');
}

A toi d'adapter....
;O)
0
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
1 sept. 2010 à 17:02
Bonjour,

à vrai dire ce n'est pas moi qui ait codé ce bout de code, je suis débutant en javascript...

si tu pourrais m'eclairer un peu plus...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 13:01
est-ce que je dois refaire une autre fonction dans le même genre que celle-ci:
function getDateState(date)
{

   var currentDate = new Date();
   if( date.getDate() currentDate.getDate()  && date.getMonth() currentDate.getMonth() && date.getFullYear() == currentDate.getFullYear() )
      if(currentDate.getHours() >= 15)
      return true;
  else return false;
 
         
   
   if( date.getTime() < currentDate.getTime() )
      return true;
   else return false;
}



ou dois-je rajouter une contrainte avec:
if(currentDate.getHours() >= 15)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 sept. 2010 à 15:28
Bonjour,
si tu pourrais m'eclairer un peu plus...
cela va être difficile...

Reprenons, si je comprends ce que fait ta fonction getDateState celle ci retourne true
SI la date est aujourd'hui jour et que l'heure est inférieure à 15h
OU SI c'est la date de demain et que l'heure est inférieure à 15h.
[i]
est-ce que je dois refaire une autre fonction dans le même genre que celle-ci: /i
non on va juste la reécrire pour plus de lisibilité, sur base de ce que je t'ai donné plus haut
//--------------------------
function getDateState( date){  
  //-- Recup Info du Jour
  var ToDay = new Date();
  var Jour  = ToDay.getDate();
  var Mois  = ToDay.getMonth();
  var Annee = ToDay.getFullYear();

  //-- Test sur aujourd'hui uniquement avant 15h
  var D_Mini = new Date ( Annee, Mois, Jour,  0, 0, 0);  // Ce jour a 0h
  var D_Maxi = new Date ( Annee, Mois, Jour, 15, 0, 0);  // Aujourd'hui a 15h
  //-- le test
  if(( date > D_Mini) && ( date < D_Maxi)){
    return( true); // Date Ok
  }

  //-- Test sur demain 15h maxi
  Jour ++;                                               // Demain donc
  var D_Mini = new Date ( Annee, Mois, Jour,  0, 0, 0);  // Demain 0h
  var D_Maxi = new Date ( Annee, Mois, Jour, 15, 0, 0);  // Demain a 15h
  //-- le test
  if(( date > D_Mini) && ( date < D_Maxi)){
    return( true); // Date Ok
  }
  //-- dans les autres cas Date -> NOk
  return( false);
}

voila, c'est simplifiable mais ce n'est pas le but et tout cela sans préjuger du reste de ton code...
;O)
0
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 15:43
ok merci beaucoup, je comprends mieux je vais voir ce que j'arrives à faire avec

cordialement

silas
0
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 17:18
Bonjour, donc j'ai incrémenté ce code mais ca ne marche pas donc je commence par le début cet à dire désactiver les jours passés ainsi qu'aujourd'hui si on dépasses 15h.

Donc ca marche mise à part aujourd'hui qui se désactive au bout de 2 click:

 function getDateState( date){  
  //-- Recup Info du Jour
  var ToDay = new Date();
  var Jour  = ToDay.getDate();
  var Mois  = ToDay.getMonth();
  var Annee = ToDay.getFullYear();

  //-- Test sur aujourd'hui uniquement avant 15h
  var D_Mini = new Date ( Annee, Mois, Jour,  0, 0, 0);  // Ce jour a 0h
  var D_Maxi = new Date ( Annee, Mois, Jour, 15, 0, 0);  // Aujourd'hui a 15h
  //-- le test
  if(( ToDay > D_Mini) && ( date < D_Maxi))
    return true; // Date Ok
  if( date > D_Maxi)
return false;



ma question: pourquoi c'est au bout de 2 click que ca se désactives?


je vais continuer à essayer de désactiver demain si on dépasses 15h aujourd'hui!




silas
0
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 17:21
voici mon site: Tapez le texte de l'url ici.

il faut aller dans nos_produits/salades/salade_quelconque et cliquer sur la photo,
le calendrier se trouve juste au dessus de "ajouter au panier"



silas
0
silas20 Messages postés 9 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 17:23
mon site ne s'est pas mis correctement :[ http://www.lunchfactory.ch]


silas
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
3 sept. 2010 à 08:30
Bonjour,
ce que je viens de voir, c'est que tu récupères la date sans notion de l'heure, j'en conclu donc que tu récupères l'heure système du passage de la commande, et cela n'est pas pris en compte dans la fonction.
Du coup je ne suis plus sur d'avoir bien compris ta démarche de test.

Concernant le problème de click, tout ce passe dans la fonction appelée et la donc ????
;O)
0
Rejoignez-nous