Commentaires sur l'article Configurateur de calendrier Javascript
Je reviens sur nos échanges de mail en passant par le blog car je pense que ceci peut intéresser d'autres personnes.
Dans le cas de plusieurs dates sur une même page,
- J'utilise une variable dans le champ input à mettre à jour,
- J'appelle la fonction calInit en lui transmettant cette variable à la place du nom du champ.
- J'affiche le calendrier en permanence en ajoutant au-dessus un titre indiquant le nom du champ qui a le focus.
Pour ce dernier point, j'ai inhibé les ligne de code contenant display="none". Je trouve cette solution inélégante. J'ai alors essayé d'ajouter un paramètre constDisplay facultatif dans l'appel de la fonction. La valeur false ou true est alors ajoutée au tableau jsSDPObj. Je rencontre une difficulté pour récupérer cette valeur afin d'inhiber le masquage du calendrier. Lorsqu'elle vaut true, le calendrier doit rester affiché.
Marc
Dans le cas de plusieurs dates sur une même page,
- J'utilise une variable dans le champ input à mettre à jour,
- J'appelle la fonction calInit en lui transmettant cette variable à la place du nom du champ.
- J'affiche le calendrier en permanence en ajoutant au-dessus un titre indiquant le nom du champ qui a le focus.
Pour ce dernier point, j'ai inhibé les ligne de code contenant display="none". Je trouve cette solution inélégante. J'ai alors essayé d'ajouter un paramètre constDisplay facultatif dans l'appel de la fonction. La valeur false ou true est alors ajoutée au tableau jsSDPObj. Je rencontre une difficulté pour récupérer cette valeur afin d'inhiber le masquage du calendrier. Lorsqu'elle vaut true, le calendrier doit rester affiché.
Marc
jsuis à 19h41
D'abord merci pour la fonction qui permet de configurer le calendrier. Comment faire une fonction qui fait pareil en retournant un timestamp. j'ai besoin des heures aussi.
alimou à 17h55
Un timestamp en Javascript ?
Il faut utiliser getTime()
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/getTime
Attention, la fonction renvoi des millisecond, donc il faut les convertir en second pour avoir un timestamp unix.
Il faut utiliser getTime()
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/getTime
Attention, la fonction renvoi des millisecond, donc il faut les convertir en second pour avoir un timestamp unix.
Patrice à 20h34
je me demande comment faire pour afficher le jour de la date selectionné sur le calendrier ?
Merci
PS : tres beau calendrier
Merci
PS : tres beau calendrier
john à 17h17
Bonjour John,
Il faut définir une classe qui est appliquée à la cellule du jour sélectionné.
Dans l'exemple suivant :
calId = calInit("calendarMain", button, fieldAttach, funcName, titleMask, navY+navM, "jsCalendar", "day", "selectedDay", monthName, dayName, constDisplay);
- "jsCalendar" est la classe du tableau qui contient le calendrier
- "day" est la classe d'un jour du mois
- "selectedDay" est la classe du jour sélectionné
Le code généré est un lien dans la cellule du tableau :
<td class="selectedDay">
<a onclick="calClick('28/12/2015', 'calendar1');return false;" href="#">28</a>
</td>
Dans votre fichier CSS, vous pouvez modifier le style en accédant au lien avec :
.jsCalendar .selectedDay a {
/* ici les styles du lien */
}
Il faut définir une classe qui est appliquée à la cellule du jour sélectionné.
Dans l'exemple suivant :
calId = calInit("calendarMain", button, fieldAttach, funcName, titleMask, navY+navM, "jsCalendar", "day", "selectedDay", monthName, dayName, constDisplay);
- "jsCalendar" est la classe du tableau qui contient le calendrier
- "day" est la classe d'un jour du mois
- "selectedDay" est la classe du jour sélectionné
Le code généré est un lien dans la cellule du tableau :
<td class="selectedDay">
<a onclick="calClick('28/12/2015', 'calendar1');return false;" href="#">28</a>
</td>
Dans votre fichier CSS, vous pouvez modifier le style en accédant au lien avec :
.jsCalendar .selectedDay a {
/* ici les styles du lien */
}
Patrice à 17h47
Bonjour Patrice,
Merci pour ta réponse ultra rapide, j'essaie de mieux comprendre ton code pour éviter de trop te déranger.
J'ai du mal m'exprimer, en fait j'aimerais par exemple, quand l'utilisateur clique sur le 6 janvier, j'ai la date selectionné avec dateStr mais j'aimerais pouvoir lui dire " Ok pour le Mercredi du 06 janvier mais tu peux aussi venir le vendredi 08 si tu veux " ( avec une fonction style calDayNav('+2')
Si tu m'avais bien compris désolé de la répétition
Merci pour ta réponse ultra rapide, j'essaie de mieux comprendre ton code pour éviter de trop te déranger.
J'ai du mal m'exprimer, en fait j'aimerais par exemple, quand l'utilisateur clique sur le 6 janvier, j'ai la date selectionné avec dateStr mais j'aimerais pouvoir lui dire " Ok pour le Mercredi du 06 janvier mais tu peux aussi venir le vendredi 08 si tu veux " ( avec une fonction style calDayNav('+2')
Si tu m'avais bien compris désolé de la répétition
john à 12h22
Re,
J'ai reussi à faire à peu près ce que je voulais faire j'ai une simple question lorsqu'on clique sur une date peut on ressortir l'objet date sur laquelle on a cliquer ?
encore Merci
J'ai reussi à faire à peu près ce que je voulais faire j'ai une simple question lorsqu'on clique sur une date peut on ressortir l'objet date sur laquelle on a cliquer ?
encore Merci
john à 16h13
Tu peux supprimer mes spam désolé... Mais j'ai trouver ce que je cherchais j'ai ajouter une fonction qui remplit un tableau de la semaine en commencant par le jour selectionné par l'utilisateur.
Voilou et encore merci pour ton calendrier simple et efficace ;)
Voilou et encore merci pour ton calendrier simple et efficace ;)
john à 16h51
J'essaie qu'on ne puisse pas cliquer sur les dates deja passées mais je galère au niveau de la condition je comprend pas trop pourquoi ça ne marche pareil
dateA = new Date();
day= new Date(year, month+1, dateA.getDate());
// condition ajouter pour qu'on ne puisse pas cliquer sur une date expiré
if(day > dateA ){
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a href="#"'+(me.funcDateClic!='' ? ' onclick="'+me.funcDateClic+'(\''+i+'/'+(month+1)+'/'+year+'\', \''+me.id+'\');return false;"':'')+'>'+i+'</a></td>';
}
else
{
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a>'+i+'</a></td>';
}
dateA = new Date();
day= new Date(year, month+1, dateA.getDate());
// condition ajouter pour qu'on ne puisse pas cliquer sur une date expiré
if(day > dateA ){
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a href="#"'+(me.funcDateClic!='' ? ' onclick="'+me.funcDateClic+'(\''+i+'/'+(month+1)+'/'+year+'\', \''+me.id+'\');return false;"':'')+'>'+i+'</a></td>';
}
else
{
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a>'+i+'</a></td>';
}
john à 19h11
je poste ici la petite amélioration apportée à mes besoin pour qu'on ne puisse pas cliquer sur une date passée
day= new Date(year, month, i);
heureAvant = 12 // Ceci correspond au nombre d'heure avant la fin du jour a laquelle nous pouvons encore cliqué
/* Cette partie sert juste a rendre le jour d'aujourd'hui encore dispo selon une heure établie */
nbM = day.getTime();
OneDate = 1000 *60 *60 * heureAvant;
nbM = nbM + OneDate ;
day=new Date(nbM); // condition ajouter pour qu'on ne puisse pas cliquer sur une date expiré
if(day >= dateA){
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a href="#"'+(me.funcDateClic!='' ? ' onclick="'+me.funcDateClic+'(\''+i+'/'+(month+1)+'/'+year+'\', \''+me.id+'\');return false;"':'')+'>'+i+'</a></td>';
}
else
{
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a>'+i+'</a></td>';
}
day= new Date(year, month, i);
heureAvant = 12 // Ceci correspond au nombre d'heure avant la fin du jour a laquelle nous pouvons encore cliqué
/* Cette partie sert juste a rendre le jour d'aujourd'hui encore dispo selon une heure établie */
nbM = day.getTime();
OneDate = 1000 *60 *60 * heureAvant;
nbM = nbM + OneDate ;
day=new Date(nbM); // condition ajouter pour qu'on ne puisse pas cliquer sur une date expiré
if(day >= dateA){
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a href="#"'+(me.funcDateClic!='' ? ' onclick="'+me.funcDateClic+'(\''+i+'/'+(month+1)+'/'+year+'\', \''+me.id+'\');return false;"':'')+'>'+i+'</a></td>';
}
else
{
h += '<td class="'+(i==today ? me.classSelection:me.classTd)+'"><a>'+i+'</a></td>';
}
john à 11h52
Bonjour John,
Merci pour ta solution.
Tu place ton code dans le jsSimpleDatePickr.js je suppose ?
N'oublie de déclarer tes variables avec var sinon elles seront déclarés sous windows et seront globales ;-)
Merci pour ta solution.
Tu place ton code dans le jsSimpleDatePickr.js je suppose ?
N'oublie de déclarer tes variables avec var sinon elles seront déclarés sous windows et seront globales ;-)
Patrice à 19h49
bonjour,
ce script fonctionne parfaitement, mais il y a une chose que je n'arrive pas à faire, ni dans le code js ni le css :
je voudrais que le calendrier soit masqué par défaut et révélé seulement quand on clique sur le bouton.
J'ai utilisé le configurateur.
merci pour cet excellent travail.
ce script fonctionne parfaitement, mais il y a une chose que je n'arrive pas à faire, ni dans le code js ni le css :
je voudrais que le calendrier soit masqué par défaut et révélé seulement quand on clique sur le bouton.
J'ai utilisé le configurateur.
merci pour cet excellent travail.
thy à 15h55
Bonjour thy,
Il suffit de supprimer la ligne "calShow(calId);" et le calendrier ne sera plus affiché par défaut.
<div id="calendarMain" class="calendarMain"></div>
<script type="text/javascript">
//<![CDATA[
var calId = calInit("calendarMain", "", "", "", "M AAAA", "01", "jsCalendar", "day", "selectedDay", ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], ["D", "L", "M", "M", "J", "V", "S"], false);
//]]>
</script>
Il suffit de supprimer la ligne "calShow(calId);" et le calendrier ne sera plus affiché par défaut.
<div id="calendarMain" class="calendarMain"></div>
<script type="text/javascript">
//<![CDATA[
var calId = calInit("calendarMain", "", "", "", "M AAAA", "01", "jsCalendar", "day", "selectedDay", ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], ["D", "L", "M", "M", "J", "V", "S"], false);
//]]>
</script>
Patrice à 09h54