Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Działa pod IE, w firefox nie :(
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Lonas
Witam. Mam problem ze skryptem kalendarza - po nacisnieciu w kal wywoluje się plik którego kod wkleje ponizej. W IE działą poprawnie przekazuje date i jest ona przekazywana do zmiennej.

W IE po wybraniu daty okienko jest zamykane i data sie pojawia w polu input
W firefox naciskam na date a okno sie nie zamyka i data nie jest przekazywana sad.gif

Ktoś wie gdzie jest bład ?

Kod
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Kalendarz</title>
<style type="text/css">
<!--
.BUTTON {
       border-top: 1px solid;
       border-right: 1px solid;
       border-bottom: 1px solid;
       border-left: 1px solid;
       border-color: #c3c3c3;
       background: #f0f0f0;
width:30;
       font-family: Verdana;

color:#000066;
       font-size: 12;
}
.text{

   color: #990000;
   font-family: arial;
   font-size:11;
   font-weight:bold;
   text-align:center;
   background-color: #f7f7f7;
   border: 1px solid;
   border-color: #cccccc;
}
.jeden{
    color: #000066;
   font-family: arial;
   font-size:11;
   font-weight:bold;
}
-->
</style>
</head>
<body onload="thisMonth()">
<script language="JavaScript">

//Form button calendar (author unknown)

function setDate(str) {

if (str == "   ") {
return;
}

mnth1 = document.forms[0].month.value;
mnth = mnth1;
mnth++;

if(mnth < 10)
{
mnth = '0'+mnth;
}
if(str < 10)
{
   str = '0'+str;
}
year = document.forms[0].year.value;
dateStr = str+"-"+mnth+"-"+year;

dateStr = trim(dateStr);

//document.forms[1].dateField.value = dateStr;
//window.opener.form1.submit();
if(document.forms[1].aaa.value == 1)
   window.opener.form1.dateOd.value = dateStr;
else if(document.forms[1].aaa.value == 2)  
   window.opener.form1.dateDo.value = dateStr;

window.close();

}//setDate()

/**
* The function removes spaces from the selected date.
*/

function trim(str) {

res="";

for(var i=0; i< str.length; i++) {
  if (str.charAt(i) != " ") {
    res +=str.charAt(i);
}
}

return res;

}//trim()

/**
* The method to get the Month name given the Month number of the year.
*/

function getMonthName(mnth) {

if (mnth == 0) {
name = "styczeń";
}else if(mnth==1) {
name = "luty";
}else if(mnth==2) {
name = "marzec";
}else if(mnth==3) {
name = "kwiecień";
}else if(mnth==4) {
name = "maj";
} else if(mnth==5) {
name = "czerwiec";
} else if(mnth==6) {
name = "lipiec";
} else if(mnth==7) {
name = "sierpień";
} else if(mnth==8) {
name = "wrzesień";
} else if(mnth==9) {
name = "październik";
} else if(mnth==10) {
name = "listopad";
} else if(mnth==11) {
name = "grudzień";
}

return name;

}//getMonthName()

/**
* Get the number of days in the month based on the year.
*/

function getNoOfDaysInMnth(mnth,yr) {

rem = yr % 4;

if(rem ==0) {
  leap = 1;
} else {
leap = 0;
}

noDays=0;

if ( (mnth == 1) || (mnth == 3) || (mnth == 5) ||
     (mnth == 7) || (mnth == 8) || (mnth == 10) ||
     (mnth == 12)) {
noDays=31;
} else if (mnth == 2) {
          noDays=28+leap;
       } else {
          noDays=30;
}

//alert(noDays);
return noDays;

    
}//getNoOfDaysInMnth()

/**
* The function to reset the date values in the buttons of the
* slots.
*/

function fillDates(dayOfWeek1,noOfDaysInmnth) {

for(var i=1; i<43; i++) {
  str = "s"+i;
  document.forms[0].elements[str].value="   ";
}


startSlotIndx = dayOfWeek1;
slotIndx = startSlotIndx;

for(var i=1; i<(noOfDaysInmnth+1); i++) {
slotName = "s"+slotIndx;

val="";
if (i<10) {
   val = " "+i+" ";
} else {
   val = i;
}

document.forms[0].elements[slotName].value = val;
slotIndx++;
}

}//fillDates()


/**
* The function that is called at the time of loading the page.
* This function displays Today's date and also displays the
* the calendar of the current month.
*/

function thisMonth() {

dt = new Date();
mnth  = dt.getMonth(); /* 0-11*/
dayOfMnth = dt.getDate(); /* 1-31*/
dayOfWeek = dt.getDay(); /*0-6*/
yr = dt.getFullYear(); /*4-digit year*/

//alert("month:"+(mnth+1)+":dayofMnth:"+dayOfMnth+":dayofweek:"+dayOfWeek+":year:"+yr);

mnthName = getMonthName(mnth)+ " ";
document.forms[0].month.value = mnth;
document.forms[0].year.value = yr;
document.forms[0].currMonth.value = mnth;
document.forms[0].currYear.value = yr;

document.forms[0].monthYear.value = mnthName+yr;
//document.forms[1].dateField.value = (mnth+1)+"/"+dayOfMnth+"/"+yr;

startStr = (mnth+1)+"/1/"+yr;
dt1 = new Date(startStr);
dayOfWeek1 = dt1.getDay(); /*0-6*/

noOfDaysInMnth = getNoOfDaysInMnth(mnth+1,yr);
fillDates(dayOfWeek1+1,noOfDaysInMnth);


}//thisMonth()

/**
* The function that will be used to display the calendar of the next month.
*/

function nextMonth() {

var currMnth = document.forms[0].month.value;
currYr = document.forms[0].year.value;

if (currMnth == "11") {
   nextMnth = 0;
   nextYr = currYr;
   nextYr++;
} else {
  nextMnth=currMnth;
  nextMnth++;
  nextYr = currYr;
}

mnthName = getMonthName(nextMnth);
document.forms[0].month.value=nextMnth;
document.forms[0].year.value=nextYr;
document.forms[0].monthYear.value= mnthName+" "+nextYr;

str = (nextMnth+1)+"/1/"+nextYr;
dt = new Date(str);
dayOfWeek = dt.getDay();

noOfDays = getNoOfDaysInMnth(nextMnth+1,nextYr);

fillDates(dayOfWeek+1,noOfDays);


}//nextMonth()

/**
* The method to display the calendar of the previous month.
*/

function prevMonth() {

var currMnth = document.forms[0].month.value;
currYr = document.forms[0].year.value;

if (currMnth == "0") {
   prevMnth = 11;
   prevYr = currYr;
   prevYr--;
} else {
  prevMnth=currMnth;
  prevMnth--;
  prevYr = currYr;
}

str = (prevMnth+1)+"/1/"+prevYr;
dt = new Date(str);
dayOfWeek = dt.getDay();

/***********************************************
* Remove the comment if do not want the user to
* go to any previous month than this current month.
***********************************************/

/*

runningMonth = document.forms[0].currMonth.value;
rMonth=runningMonth;
rMonth++;
runningYear = document.forms[0].currYear.value;
rYear=runningYear;

str = (rMonth)+"/1/"+rYear;
dt1 = new Date(str);

if (dt.valueOf() < dt1.valueOf()) {
  alert('Cannot Go Before Current Month');
  return;
}

*/

/**************************************************
* End of comment
**************************************************/

mnthName = getMonthName(prevMnth);
document.forms[0].month.value=prevMnth;
document.forms[0].year.value=prevYr;
document.forms[0].monthYear.value= mnthName+" "+prevYr;

noOfDays = getNoOfDaysInMnth(prevMnth+1,prevYr);
fillDates(dayOfWeek+1,noOfDays);

}//prevMonth()

</script>
<table border=0 align=center width="100%">
<tr>
<td align="center">
<form>
   <!-- Hidden fields --->

   <input type=hidden name=month value="">
   <input type=hidden name=year value="">
   <input type=hidden name=currMonth value="">
   <input type=hidden name=currYear value="">


   <!-- End of Hidden fields --->

   <p>
    <input type="button" name="prev" onclick="prevMonth()"
    value="<<" class="BUTTON">
    <input type="text" size="15" name="monthYear"
    value="" readonly="1" class="text">
    <input type="button" name="next" onclick="nextMonth()" value=">>" class="BUTTON">
  </p>
  
   <table  align=center border="0" bordercolor="#f0f0f0" cellpadding="1" cellspacing="1"
   width="100%">
       <tr bgcolor="#c4c4c4" align="center">
           <td width="14%"><font  class="jeden">NI</font></td>
           <td width="14%"><font  class="jeden">PO</font></td>
           <td width="14%"><font  class="jeden">WT</font></td>
           <td width="14%"><font  class="jeden">ŚR</font></td>
           <td width="14%"><font  class="jeden">CZ</font></td>
           <td width="14%"><font  class="jeden">PI</font></td>
           <td width="14%"><font  class="jeden">SO</font></td>
       </tr>
       <tr>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
    name="s1" value=" 1 " class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s2" value=" 2 " class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s3" value=" 3 " class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s4" value=" 4 " class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s5" value=" 5 " class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s6" value=" 6 " class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s7" value=" 7 " class="BUTTON"></td>
       </tr>
       <tr>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s8" value=" 8 " class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s9" value=" 9 " class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s10" value="10" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s11" value="11" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s12" value="12" class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s13" value="13" class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s14" value="14" class="BUTTON"></td>
       </tr>
       <tr>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s15" value="15" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s16" value="16" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s17" value="17" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s18" value="18" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s19" value="19" class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s20" value="20" class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s21" value="21" class="BUTTON"></td>
       </tr>
       <tr>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s22" value="22" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s23" value="23" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s24" value="24" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s25" value="25" class="BUTTON"></td>
           <td align="center" width="14%"><input type="button"
           onclick="setDate(this.value);"
           name="s26" value="26" class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s27" value="27" class="BUTTON"></td>
           <td align="center" width="15%"><input type="button"
           onclick="setDate(this.value);"
           name="s28" value="28" class="BUTTON"></td>
       </tr>
       <tr>
           <td align="center"><input type="button" name="s29"
           onclick="setDate(this.value);"
           value="29" class="BUTTON"></td>
           <td align="center"><input type="button" name="s30"
           onclick="setDate(this.value);"
           value="30"  class="BUTTON"></td>
           <td align="center"><input type="button" name="s31"
           onclick="setDate(this.value);"
           value="   "  class="BUTTON"></td>
           <td align="center"><input type="button" name="s32"
           onclick="setDate(this.value);"
           value="   "  class="BUTTON"></td>
           <td align="center"><input type="button" name="s33"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s34"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s35"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
       </tr>
       <tr>
           <td align="center"><input type="button" name="s36"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s37"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s38"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s39"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s40"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s41"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
           <td align="center"><input type="button" name="s42"
           onclick="setDate(this.value);"
           value="   " class="BUTTON"></td>
       </tr>
   </table>
</form>
<form>
<input type = hidden name ="aaa" value = "<?php print("$pole"); ?>" >
</form>
</td>
</tr>
</table>



</body>

</html>
em1X
tylko Chuck by mial ochote wertowac ten twój kod. W Firefox znajdz cos takiego pod nazwa "konsola javascript". Bedziesz mial czarno-na-bialym jakie błędy wystapily.
Lonas
Masz racje - bład pokazuje taki


Błąd: window.opener.form1 has no properties
Plik źródłowy: http://serwer:5665/kalendarz/kalendarz/dyn...darz.php?pole=2
Wiersz: 74

czyli

Kod
73  else if(document.forms[1].aaa.value == 2)  
74     window.opener.form1.dateDo.value = dateStr;
siemakuba
w oknie ktore otwiera kalendarz znajdz element z name="dateDo" (to na 99% ten do ktorego trafia data po wybraniu w kalendarzu), nadaj mu id (jesli nie ma), np. id="idDateDo" i zmien linie 74 tak:
Kod
window.opener.getElementById('idDateDo').value = dateStr;


pozdr.
Lonas
W tej samej lini teraz wyskauje

Błąd: window.opener.getElementById is not a function
Plik źródłowy: http://serwer:5665/kalendarz/kalendarz/dyn...darz.php?pole=2
Wiersz: 74
siemakuba
hm, mea culpa. chyba powinno być:
Cytat
window.opener.document.getElementById('idDateDo').value = dateStr;


URL który podałeś prowadzi zdaje się na twój lokalny serwer.... ;>
pozdr.
Lonas
Bardzo ładnie działa smile.gif dzieki smile.gif
Ps. tak tak mój lokalny smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.