Vediamo, fai così:
1- Metti ad entrambi gli input readonly="readonly", così che non si possano editare.
2- metti disabled="true" al secondo bottone (se non può schiacciarlo non può selezionare la data) e mettici un id (tipo id="secondoButton")
3- Modifica la funzione selected così:
Codice PHP:
function selected(cal, date) {
cal.sel.value = date; // just update the date in the input field.
if (cal.dateClicked && (cal.sel.id == "sel" || cal.sel.id == "sel3"))
cal.callCloseHandler();
if(cal.sel.id == 'sel3' && cal.sel.value)
{
document.getElementById("secondoButton").disabled = false;
}
}
}
Per impostare la data nello script che usi per gestire il calendario devi passare una stringa in un formato supportato dall'oggetto Date (new Date("Mese gg, aaaa"), in inglese il mese ovviamente), nel costruttore dell'oggetto Calendar.
Ti conviene modificare la tua funzione showCalendar in modo che accetti anche la data:
Codice PHP:
function showCalendar(id, format, dateStr, showsTime, showsOtherMonths) {
var el = document.getElementById(id);
if (_dynarch_popupCalendar != null) {
// we already have some calendar created
_dynarch_popupCalendar.hide(); // so we hide it first.
} else {
// first-time call, create the calendar.
var cal = new Calendar(1, dateStr, selected, closeHandler);
// uncomment the following line to hide the week numbers
// cal.weekNumbers = false;
if (typeof showsTime == "string") {
cal.showsTime = true;
cal.time24 = (showsTime == "24");
}
if (showsOtherMonths) {
cal.showsOtherMonths = true;
}
_dynarch_popupCalendar = cal; // remember it in the global var
cal.setRange(1900, 2070); // min/max year allowed.
cal.create();
}
_dynarch_popupCalendar.setDateFormat(format); // set the specified date format
_dynarch_popupCalendar.parseDate(el.value); // try to parse the text in field
_dynarch_popupCalendar.sel = el; // inform it what input field we use
_dynarch_popupCalendar.showAtElement(el.nextSibling, "Br"); // show the calendar
return false;
}
non so se si vede, ma oltre ai parametri ho modificato anche la linea dove fai new Calendar.
poi crei un array fuori dalle funzioni:
Codice PHP:
var engMonth = new Array();
engMonth[1] = 'January';
engMonth[2] = 'February';
engMonth[3] = 'March';
engMonth[4] = 'April';
engMonth[5] = 'May';
engMonth[6] = 'June';
engMonth[7] = 'July';
engMonth[8] = 'August';
engMonth[9] = 'September';
engMonth[10] = 'October';
engMonth[11] = 'November';
engMonth[12] = 'December';
A questo punto, dal secondo bottone togli l'onclick e trasformi ancora la funzione select()
Codice PHP:
function selected(cal, date) {
cal.sel.value = date; // just update the date in the input field.
if (cal.dateClicked && (cal.sel.id == "sel" || cal.sel.id == "sel3"))
cal.callCloseHandler();
if(cal.sel.id == 'sel3' && cal.sel.value)
{
var button = document.getElementById("secondoButton");
button.disabled = false;
var splitted = date.split("/");
var dateStr = engMonth[parseInt(splitted[1])]+" "+splitted[0]+", "+splitted[2]:
button.onclick = function(){
return showCalendar('sel1', '%d/%m/%Y', dateStr);
}
}
}
}
Dovrebbe andare...