saturdayMedlem sedan jan. 2007133 inläggHej,
Jag ha ett problem. Jag har en kod som ser ut så här:
var_Typed = new Date(myYear.text,myMonth.text,myDate.text)
var_Today = new Date();
differenceMilliseconds = var_Today - var_Typed;
difference_days = Math.floor(differenceMilliseconds/86017698.6447148);
difference_days = difference_days - 3;
difference_years = difference_days/365
if(difference_years < 18) {
gotoAndStop(1);
varning="YOU ARE TO YOUNG!"
} else {
gotoAndStop(3);
}
Vad det gör är att kolla om en person är ~18 år eller inte. Det är tre fält som datumet hämtas ifrån.
Detta fungerar kalas. Dvs, är man för ung kommer man inte igenom. Men nu kommer mitt problem; Om man inte fyller i något, dvs om myYear, myMonth och myDate är tomma kommer man rätt igenom scriptet.
Jag behöver alltså kolla om fälten innehåller något eller inte. Jag har inte lyckats hittills. Jag har sökt igenom flashhjälpen för att se om det finns någon "isDate" eller liknande, men utan framgång. Jag har prövat att göra om var_Typed till en sträng och kört "if (var_Typed = "")" men inte heller det verkar vilja fungera. Vad är ett datum och hur kan jag kolla om det är sant eller falskt i ActionScript? Vad jag vill göra, förutom åldersgränsen jag redan kollar, är att kolla så att myYear, myMonth och myDate är ifyllt - eller att var_Typed är ett datum, annars ska man inte komma igenom.
Värden du matar in i date funktionen skall vara nummer.
För att omvandla strängarna i text fälten till nummer kan du köra Number() funktionen.
Då kommer var_Typed.valueOf() vara NaN om det inmatade värdet inte är ett giltligt datum.
saturdayMedlem sedan jan. 2007133 inläggDet går bara att fylla i nummer i fälten så det är bara nummer som kommer in i variablerna. Så jag behöver inte kolla extra, så att säga, om det är nummer eller bokstäver som kommer in. Men frågan är fortfarande hur jag kollar om fälten är ifyllda eller ej?
Ett textfält är alltid en sträng, oavsett om du fyller i siffror eller inte.
För att date skall funka korrekt skall det vara värden av typen nummer, annars får du den typ av problem du upplever.
Du kan kolla om ett fält är ifyllt med hjälp av myYear.text.length>0, men det är smidigare att att använda date objektet för att kolla om de ifyllda värderna är ett giltligt datum.
var year:Number = myYear.text;
var month:Number = Number(myMonth.text)-1; // 0 = Januari
var date:Number = myDate.text;
var var_Typed:Date = new Date(year, month, date);
if(!isNaN(var_Typed.valueOf())){
// valid date
}
saturdayMedlem sedan jan. 2007133 inläggOrdnade sig! tack för hjälpen Blixt, du är som vanligt vass på Actionsript. :)
Kanon!
Sättet jag skulle göra kollen på om du vill vara säker på att det inte diffar på skottdagar:
var now:Date=new Date();
var limitDate:Date = new Date(now.getFullYear()-18, now.getMonth(), now.getDate());
if(varTyped.valueOf() > limitDate.valueOf()) {
gotoAndStop(1);
varning="YOU ARE TO YOUNG!";
} else {
gotoAndStop(3);
}
saturdayMedlem sedan jan. 2007133 inläggSjukt bra! Ännu bättre kod än den jag försökt pilla ihop med millisekunder osv. :) Ännu en gång, tack!
Du är välkommen.
Dock ser jag en liten miss...om du vill att man skall komma in på sin 18-års dag får du ändra till:
if(varTyped.valueOf() >= limitDate.valueOf()) {