03. august 2004 - 17:43Der er
9 kommentarer og 1 løsning
hjælp til et dateChooser script
Hej jeg med hjælp fra sephiroth.net fået et script der kan lave et Array med valgbare datoer til dateChooser komponenten, dette er mig meget indviklet da de normale funktioner i dateChooser kun tillader man har en række hinanden efterfølgende datoer der kan være enten "selectableRange" eller "disabledRange". Men her er der tale om enkelte udvalgte ikke kontinuerlige datoer der kan vælges..
Mit problem var jeg har et Array med datoer der skal være "disabled"(ikke valgbare) og alle andre datoer skal være "selectable"(valgbare) men det script han har lavet tager et array med dage der der skal være selectable og gøre resten af datoerne i året disabled.....altså det stik modsatte af hvad det gør nu, jeg kan ikke finde ud af at ændre i scriptet af den simple grund jeg ikke forstår det godt nok... er der nogen der kan hjælpe mig vil jeg blive meget lykkelig...
ActionScript Flash: // here your dates.. all the valid dates you want valid_dates = ["01/01/2004", "05/02/2004", "15/08/2004", "25/12/2004", "19/07/2005"];
// to be populated invalid_dates = []
function convert (data) { var d; var s; s = data.split ("/"); d = new Date (s[2], parseInt(s[1],10)-1, s[0]); return d; } // convert into date object for(var a in valid_dates){ valid_dates[a] = convert(valid_dates[a]) } // sort new object valid_dates.sort(function(a,b){ return a.getTime() - b.getTime() })
// minimum date var _min = new Date(valid_dates[0].getTime()).setDate(valid_dates[0].getDate()-1) // maximum date var _max = new Date(valid_dates[valid_dates.length-1].getTime()).setDate(valid_dates[valid_dates.length-1].getDate()+1) invalid_dates.push({rangeStart: new Date(0), rangeEnd: _min})
for(var a = 0; a < (valid_dates.length-1); a++){ sDate = new Date(valid_dates[a].getTime()).setDate(valid_dates[a].getDate() + 1) eDate = new Date(valid_dates[a+1].getTime()).setDate(valid_dates[a+1].getDate() - 1) invalid_dates.push({rangeStart: sDate, rangeEnd: eDate}) }
invalid_dates.push({rangeStart: _max, rangeEnd: new Date(2099,1,1)}) DC.disabledRanges = invalid_dates
function convert (data){ var d; var s; s = data.split ("/"); d = new Date (s[2], parseInt(s[1],10)-1, s[0]); return d; } // convert into date object for(var a in valid_dates){ invalid_dates[a] = convert(invalid_dates[a]) }
Ahh måske nok min fejl, det script jeg har brugt før havde jeg ladet udelukke dage før dags dato...men jeg kunne ikke implementere det i det nye script da jeg ikke forstod det... dage før dags dato er ligegyldige da ingen af de arrangementer er relevante...da de jo er ovre, hvis du gider ville jeg være meget taknemmelig, smid endeligt et svar jeg får først testet i morgen men jeg tager dit ord for det virker du plejer at være god for det. :)
øhh ville du hjælpe med at få det til at gøre alle dage før dags dato "ikke valgbare"? (fik jeg formuleret det omvendt)
Ja har lavet et større projekt og forsøgt(uden hensyn til størrelse) at bruge så mange komponenter som muligt, lidt som et eksperiment...de er hmmm specielle, "god tjener men streng herre" hedder det vist..
function convert (data){ var d; var s; s = data.split ("/"); d = new Date (s[2], parseInt(s[1],10)-1, s[0]); return d; } // convert into date object curDate = new Date(); curDate.setHours(0,0,0,0); final_invalid_dates[0] = {rangeEnd: curDate}; for(var a in invalid_dates){ var tmpDate = convert(invalid_dates[a]); trace(tmpDate); if(tmpDate > curDate) final_invalid_dates.push(tmpDate); }
Så blev der endelig tid til at teste...lang dag.... det virker perfekt tak igen..
Synes godt om
Ny brugerNybegynder
Din løsning...
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.