[ etrarkia @ 27.08.2009. 19:38 ] @
Ubacujem jedan kalendar u stranu i imam problem sledeci problem: - skripta koju koristim je napisana tako da kada se klikom na text field prikazuje pop-up kalendar. Onda se izabere vrednost za datum i ona se unese u text field. Treba mi pomoc povodom toga... treba mi opcija da se klikom na dugme pojavljuje pop-up kalendar, a da se izabrana vrednost unese u textfield. Evo JS koda Citat: // User Changeable Vars var HighlightToday = true; // use true or false to have the current day highlighted var DisablePast = true; // use true or false to allow past dates to be selectable // The month names in your native language can be substituted below var MonthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December"); // Global Vars var now = new Date(); var dest = null; var ny = now.getFullYear(); // Today's Date var nm = now.getMonth(); var nd = now.getDate(); var sy = 0; // currently Selected date var sm = 0; var sd = 0; var y = now.getFullYear(); // Working Date var m = now.getMonth(); var d = now.getDate(); var l = 0; var t = 0; var MonthLengths = new Array(31,28,31,30,31,30,31,31,30,31,30,31); /* Function: GetDate(control) Arguments: control = ID of destination control */ function GetDate() { EnsureCalendarExists(); DestroyCalendar(); // One arguments is required, the rest are optional // First arguments must be the ID of the destination control if(arguments[0] == null || arguments[0] == "") { // arguments not defined, so display error and quit alert("ERROR: Destination control required in funciton call GetDate()"); return; } else { // copy argument dest = arguments[0]; } y = now.getFullYear(); m = now.getMonth(); d = now.getDate(); sm = 0; sd = 0; sy = 0; var cdval = dest.value; if(/\d{1,2}.\d{1,2}.\d{4}/.test(dest.value)) { // element contains a date, so set the shown date var vParts = cdval.split("/"); // assume mm/dd/yyyy sm = vParts[0] - 1; sd = vParts[1]; sy = vParts[2]; m=sm; d=sd; y=sy; } // l = dest.offsetLeft; // + dest.offsetWidth; // t = dest.offsetTop - 125; // Calendar is displayed 125 pixels above the destination element // if(t<0) { t=0; } // or (somewhat) over top of it. ;) /* Calendar is displayed 125 pixels above the destination element or (somewhat) over top of it. ;)*/ l = 750; t = dest.offsetTop - 125; if(t < 200) t = 435; // > DrawCalendar(); } /* function DestoryCalendar() Purpose: Destory any already drawn calendar so a new one can be drawn */ function DestroyCalendar() { var cal = document.getElementById("dpCalendar"); if(cal != null) { cal.innerHTML = null; cal.style.display = "none"; } return } function DrawCalendar() { DestroyCalendar(); cal = document.getElementById("dpCalendar"); cal.style.left = l + "px"; cal.style.top = t + "px"; var sCal = "<table><tr><td class=\"cellButton\"><a href=\"javascript: PrevMonth();\" title=\"Previous Month\"><<</a></td>"+ "<td class=\"cellMonth\" width=\"80%\" colspan=\"5\">"+MonthNames[m]+" "+y+"</td>"+ "<td class=\"cellButton\"><a href=\"javascript: NextMonth();\" title=\"Next Month\">>></a></td></tr>"+ "<tr><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>"; var wDay = 1; var wDate = new Date(y,m,wDay); if(isLeapYear(wDate)) { MonthLengths[1] = 29; } else { MonthLengths[1] = 28; } var dayclass = ""; var isToday = false; for(var r=1; r<7; r++) { sCal = sCal + "<tr>"; for(var c=0; c<7; c++) { var wDate = new Date(y,m,wDay); if(wDate.getDay() == c && wDay<=MonthLengths[m]) { if(wDate.getDate()==sd && wDate.getMonth()==sm && wDate.getFullYear()==sy) { dayclass = "cellSelected"; isToday = true; // only matters if the selected day IS today, otherwise ignored. } else if(wDate.getDate()==nd && wDate.getMonth()==nm && wDate.getFullYear()==ny && HighlightToday) { dayclass = "cellToday"; isToday = true; } else { dayclass = "cellDay"; isToday = false; } if(((now > wDate) && !DisablePast) || (now <= wDate) || isToday) { // > // user wants past dates selectable sCal = sCal + "<td class=\""+dayclass+"\"><a href=\"javascript: ReturnDay("+wDay+");\">"+wDay+"</a></td>"; } else { // user wants past dates to be read only sCal = sCal + "<td class=\""+dayclass+"\">"+wDay+"</td>"; } wDay++; } else { sCal = sCal + "<td class=\"unused\"></td>"; } } sCal = sCal + "</tr>"; } sCal = sCal + "<tr><td colspan=\"4\" class=\"unused\"></td><td colspan=\"3\" class=\"cellCancel\"><a href=\"javascript: DestroyCalendar();\">Cancel</a></td></tr></table>" cal.innerHTML = sCal; // works in FireFox, opera cal.style.display = "inline"; } function PrevMonth() { m--; if(m==-1) { m = 11; y--; } DrawCalendar(); } function NextMonth() { m++; if(m==12) { m = 0; y++; } DrawCalendar(); } function ReturnDay(day) { cDest = document.getElementById(dest); dest.value = (m+1)+"/"+day+"/"+y; DestroyCalendar(); } function EnsureCalendarExists() { if(document.getElementById("dpCalendar") == null) { var eCalendar = document.createElement("div"); eCalendar.setAttribute("id", "dpCalendar"); document.body.appendChild(eCalendar); } } function isLeapYear(dTest) { var y = dTest.getYear(); var bReturn = false; if(y % 4 == 0) { if(y % 100 != 0) { bReturn = true; } else { if (y % 400 == 0) { bReturn = true; } } } return bReturn; } HTML [<body onload=initdt(document.myForm);"> ..... <input type="text" value="Click to select date!" name="selecteddate" id="selecteddate" readonly onclick="GetDate(this);" /> [/quote] Sta treba da uradim da bih napravio ovo? Hvala! |