function checkdate(dep_num) { var new_date = "0000-00-00"; for ( var i=0; i <= dep_num; i++) { var check_date = window.document.dateform.dep_i.value; if ( check_date >= new_date) new_date = check_date; } window.document.dateform.p_start.value = new_date+1; } --------------------------------------------- Problemet er todelt: 1. Jeg vet ikke hvor mange hidden inputs det skal være, så derfor trenger jeg en for-sløyfe som sjekker alle datoene. "for" sløyfen jeg bruker fungerer ikke. 2. Hvordan får jeg sjekket hvilke dato som er størst og lagt til 1 dag ekstra?
prøv den her som checker datoen (ud fra Date-objectet) og lægger en dag til: function checkdate(dep_num) { var new_date = new Date(1970,00,00); for ( var i=0; i <= dep_num; i++) { var date_arr = document.dateform.elements['dep_'+i].value.split("-"); var check_date = new Date(parseInt(date_arr[0]),parseInt(date_arr[1]),parseInt(date_arr[2])); if ( check_date.getTime() >= new_date.getTime()) new_date = check_date; } new_date.setDate(new_date.getDate()+1); window.document.dateform.p_start.value = new_date.getYear()+"-"+(new_date.getMonth())+"-"+new_date.getDate(); }
nåja, og så vil du sikkert også have at den skriver nul foran når måneden eller datoen er under 10: function checkdate(dep_num) { var new_date = new Date(1970,00,00); for ( var i=0; i <= dep_num; i++) { var date_arr = document.dateform.elements['dep_'+i].value.split("-"); var check_date = new Date(parseInt(date_arr[0]),parseInt(date_arr[1]),parseInt(date_arr[2])); if ( check_date.getTime() >= new_date.getTime()) new_date = check_date; } new_date.setDate(new_date.getDate()+1); window.document.dateform.p_start.value = new_date.getYear()+"-"; window.document.dateform.p_start.value += (new_date.getMonth() < 10) ? "0"+new_date.getMonth()+"-" : new_date.getMonth()+"-"; window.document.dateform.p_start.value += (new_date.getDate() < 10) ? "0"+new_date.getDate() : new_date.getDate(); }
I det eksempel du viser skal du forresten også kun skrive: onClick="if (this.checked) {checkdate(4)}" istedet for 4, da der slet ikke er så mange elementer.
fungerer bra, men hvis new_date er 2004-01-31 så blir new_date.setDate(new_date.getDate()+1) 2004-01-32 og det er dag som ikke fins. Hvordan får man den til å skifte til neste månede slik at den nye datoen blir 2004-02-01??
2004-01-31 eksisterer heller ikke - månederne tæller nemlig fra 0 af dvs. at 2004-01-31 er den 31 februar.
Der er endnu en bug i og det er getYear() som returnerer 103 i mozilla (når det er år 2003). Sådan står der faktisk også i netscapes javascript reference, men IE overholder har jo lavet deres egen javascript "standard". Det fulde script er altså:
function checkdate(dep_num) { var new_date = new Date(1970,00,00); for ( var i=0; i <= dep_num; i++) { var date_arr = document.dateform.elements['dep_'+i].value.split("-"); var check_date = new Date(parseInt(date_arr[0]),parseInt(date_arr[1])-1,parseInt(date_arr[2])); if ( check_date.getTime() >= new_date.getTime()) new_date = check_date; } new_date.setDate(new_date.getDate()+1); window.document.dateform.p_start.value = new_date.getFullYear()+"-"; window.document.dateform.p_start.value += (new_date.getMonth() < 10) ? "0"+(new_date.getMonth()+1)+"-" : (new_date.getMonth()+1)+"-"; window.document.dateform.p_start.value += (new_date.getDate() < 10) ? "0"+new_date.getDate() : new_date.getDate(); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.