Calendrier Javascript incompatible mozilla!!!

Signaler
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
-
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
-
hello!
Vala j'ai un bleme, mon calendrier marche nicke sous explorer mais sous mozilla rien a faire, il apparait pour le mois present, mais si je veux changer de mois, d annee kan je peux pas cliquer sur un date (ce qui normalement m'inscit la date du jour ou G cliqué dans un champs exterieur)
Voila mon code, merci si vous pouvez m aider! :

dans <Head></Head>:

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">

var dDate = new Date();
var dCurMonth = dDate.getMonth();
var dCurDayOfMonth = dDate.getDate();
var dCurYear = dDate.getFullYear();
var objPrevElement = new Object();

function fToggleColor(myElement) {
var toggleColor = "#ff0000";
if (myElement.id == "calDateText") {
if (myElement.color == toggleColor) {
myElement.color = "#F1DC2B";
} else {
myElement.color = toggleColor;
}
} else if (myElement.id == "calCell") {
for (var i in myElement.children) {
if (myElement.children.id == "calDateText") {
if (myElement.children.color == toggleColor) {
myElement.children[i].color = "#F1DC2B";
} else {
myElement.children[i].color = toggleColor;
}
}
}
}
}

function fSetSelectedDay(myElement){

if (myElement.id == "calCell") {
if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
sJour = myElement.children["calDateText"].innerText;
sMois = frmCalendarSample.tbSelMonth.value;
if(sMois.length==1)
sMois = "0"+sMois;
if(sJour.length==1)
sJour = "0"+sJour;
document.add_revenu.date.value = sJour+"-"+sMois+"-"+frmCalendarSample.tbSelYear.value;

myElement.bgColor = "#c0c0c0";
objPrevElement.bgColor = "#546486";

document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerText);
objPrevElement = myElement;
}
}
}
function fGetDaysInMonth(iMonth, iYear) {
var dPrevDate = new Date(iYear, iMonth, 0);
return dPrevDate.getDate();
}
function fBuildCal(iYear, iMonth, iDayStyle) {
var aMonth = new Array();
aMonth[0] = new Array(7);
aMonth[1] = new Array(7);
aMonth[2] = new Array(7);
aMonth[3] = new Array(7);
aMonth[4] = new Array(7);
aMonth[5] = new Array(7);
aMonth[6] = new Array(7);
var dCalDate = new Date(iYear, iMonth-1, 1);
var iDayOfFirst = dCalDate.getDay();
var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
var iVarDate = 1;
var i, d, w;
if (iDayStyle == 2) {
aMonth[0][0] = "Dimanche";
aMonth[0][1] = "Monday";
aMonth[0][2] = "Tuesday";
aMonth[0][3] = "Wednesday";
aMonth[0][4] = "Thursday";
aMonth[0][5] = "Friday";
aMonth[0][6] = "Saturday";
} else if (iDayStyle == 1) {
aMonth[0][0] = "Dim";
aMonth[0][1] = "Lun";
aMonth[0][2] = "Mar";
aMonth[0][3] = "Mer";
aMonth[0][4] = "Jeu";
aMonth[0][5] = "Ven";
aMonth[0][6] = "Sam";
} else {
aMonth[0][0] = "Di";
aMonth[0][1] = "Lu";
aMonth[0][2] = "Ma";
aMonth[0][3] = "Me";
aMonth[0][4] = "Je";
aMonth[0][5] = "Ve";
aMonth[0][6] = "Sa";
}
for (d = iDayOfFirst; d < 7; d++) {
aMonth[1][d] = iVarDate;
iVarDate++;
}
for (w = 2; w < 7; w++) {
for (d = 0; d < 7; d++) {
if (iVarDate <= iDaysInMonth) {
aMonth[w][d] = iVarDate;
iVarDate++;
}
}
}
return aMonth;
}
function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
var myMonth;
myMonth = fBuildCal(iYear, iMonth, iDayStyle);
document.write("\")
document.write(\"----
\");
document.write(\"" + myMonth[0][0] + ", \");
document.write(\"" + myMonth[0][1] + ", \");
document.write(\"" + myMonth[0][2] + ", \");
document.write(\"" + myMonth[0][3] + ", \");
document.write(\"" + myMonth[0][4] + ", \");
document.write(\"" + myMonth[0][5] + ", \");
document.write(\"" + myMonth[0][6] + ", \");
document.write(\"\");
for (w = 1; w < 7; w++) {
document.write(\"----
\")
for (d = 0; d < 7; d++) {
document.write(\"");
if (!isNaN(myMonth[w][d])) {
document.write("" + myMonth[w][d] +"");
} else {
document.write(" ");
}
document.write(", \")
}
document.write(\"\");
}
document.write("
")
}
function fUpdateCal(iYear, iMonth) {
myMonth = fBuildCal(iYear, iMonth);
objPrevElement.bgColor = "#546486";
document.all.calSelectedDate.value = "";
for (w = 1; w < 7; w++) {
for (d = 0; d < 7; d++) {
if (!isNaN(myMonth[w][d])) {
calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
} else {
calDateText[((7*w)+d)-7].innerText = " ";
}
}
}
}

</script>

Et dans body la ou je met mon calendrier :
[i]
<script language="JavaScript" for=window event=onload type="text/javascript">

var dCurDate = new Date();
frmCalendarSample.tbSelMonth.options[dCurDate.getMonth()].selected = true;
for (i = 0; i < frmCalendarSample.tbSelYear.length; i++)
if (frmCalendarSample.tbSelYear.options[i].value == dCurDate.getFullYear())
frmCalendarSample.tbSelYear.options[i].selected = true;

</script>

<form name="frmCalendarSample" method="post" action="">

<select class="field" name="tbSelMonth" onchange='fUpdateCal(frmCalendarSample.tbSelYear.value, frmCalendarSample.tbSelMonth.value)'>
<option value="1">Janvier</option>
<option value="2">Fevrier</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Decembre</option>
</select>
<select class="field" name="tbSelYear" onchange='fUpdateCal(frmCalendarSample.tbSelYear.value, frmCalendarSample.tbSelMonth.value)'>
<option value="1998">1998</option>
<option value="1999">1999</option>
<option value="2000">2000</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
</select>,

----

<script language="JavaScript" type="text/javascript">
var dCurDate = new Date();
fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 15, 15, "12px", "bold", 1);
</script>

</form>

Il y a un autre formulaire appelé 'add_revenu' dont le champs 'date' prend la valeur de la date cliqué sur le calendrier.

Si quelqu'un arrive a trouver une solution, c'est un Dieu!
Je me suis dis que ca pourrait marcher d'une autre facon genre au lieu d'utiliser les boucle avec des document.write(), d'ecrire le tableau en entier en html avec des id specifique dans chaque celleule, etc....
enfin

MERCI POUR VOTRE AIDE ET SUGGESTION!!!!

8 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
euh t'as utilisé plein de trucs pas utilisable ne js, alors pe que IE suportes mais mozilla...

le mieux c'est de coder sous Mozilla (ou tout autre rendu gecko) mais la... j'ai trop mal a la tête...
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007

Merci! Ca fait 2 jours que j'ai mal a la tete avec ce truc :p
Qu'est ce qui dans mon code n'est pas accepté par Mozilla?
Ou puis je trouvé les "normes" d'acceptation universel :) ?
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005

il y a au moins document.all.calSelectedDate qui est purement IE

mettre plutot document.frmCalendarSample.calSelectedDate

ou mieux : remplacer name="calSelectedDate " par

id="calSelectedDate "
et l'atteindre par
document.getElementById("calSelectedDate ")

Documentation bien expliquée mais encore imcomplète:
http://fr.selfhtml.org/
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
et pour faire un truc portable, vaut mieux coder sous Mozilla (ça arrives que ça ne fonctionne pas sous IE mais c'ets rare et facile a transformer...)
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007

Merci pour le conseil d'utiliser les id, j'ai tout remplacé par des id et en les appelant comme il faut. Ca marche tjr sous IE, mais par contre, mozilla n'aime toujour pas!

rien que cette partie de code marche pas :

<script language="JavaScript" for=window event=onload type="text/javascript">

var dCurDate = new Date();
document.getElementById("tbSelMonth").options[dCurDate.getMonth()].selected = true;
for (i = 0; i < document.getElementById("tbSelYear").length; i++)
if (document.getElementById("tbSelYear").options[i].value == dCurDate.getFullYear())
document.getElementById("tbSelYear").options[i].selected = true;

</script>

<form id="frmCalendarSample" method="post" action="">

<select class="field" id="tbSelMonth" name="tbSelMonth" onchange='fUpdateCal(document.getElementById("tbSelYear").value, document.getElementById("tbSelMonth").value)'>
<option value="1">Janvier</option>
<option value="2">Fevrier</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Decembre</option>
</select>
<select class="field" id="tbSelYear" name="tbSelYear" onchange='fUpdateCal(document.getElementById("tbSelYear").value, document.getElementById("tbSelMonth").value)'>
<option value="1998">1998</option>
<option value="1999">1999</option>
<option value="2000">2000</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
</select>,

----

<script language="JavaScript" type="text/javascript">
var dCurDate = new Date();
fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 15, 15, "12px", "bold", 1);
</script>

</form>

ou normalement ca selectionne dans les select la date d aujourd hui!

Enfin vala, j'ai rien trouvé sur le net de réellement clair sur les facon de coder pour tout navigateur.
Meme sur l'adresse : http://fr.selfhtml.org/
que je connaissais avant , j n'ai rien trouvé de concluant!

MErci si vous reussissez a m'aider!
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005

for=window event=onload : je ne connais pas ça

Concernant les méthodes de l'objet event, elles sont encore très différentes entre ie et Gecko, pour que ça marche, il faut employer les 2 syntaxes
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007

Je suis vraiment novice ladedans, et surtout en ce qui concerne mozilla.
Personne ne connait un endroit ou je pourrais trouver de l'aide dans les codes correspondant pour mozilla?
A moins que quelqu'un ai le temps et la gentillesse de m'aider et m'expliquer!

Je farfouille le web a la recherche d'info concernant ce qui est accepter ou non sous mozilla et comment adapter les codes pour que ca marche, mais je trouve niette!

Merci!
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007

re

<hr size="2" width="100%">