Avatar billede donslund Nybegynder
06. januar 2005 - 10:48 Der er 8 kommentarer og
1 løsning

Validering af 2 tidspunkter

Tid1 skal være idag eller i femtiden.
Tid 2 skal være i fremtiden, men gerne idag blot senere end nu.
Tid2 skal være større end tid1.

De 2 tidspunkter sammensættes af et dato felt (dd/mm/åååå) + timer (tt) + minutter (mm).

Er det noget rod?
Avatar billede stoffer Nybegynder
06. januar 2005 - 10:53 #1
Avatar billede donslund Nybegynder
06. januar 2005 - 10:58 #2
Altså Stoffer. Dit link kan regne forskellen ud ikke? Det er jeg ret ligeglad med. Jeg skal bare vide, om de 2 tidspunkter eksisterer i virkeligheden så man ikke skriver 32/01/2005 71:15:00, da denne dato og klokkeslet ikke eksisterer.
Avatar billede stoffer Nybegynder
06. januar 2005 - 12:42 #3
<script>
/*
returns false if not in scope
assumes a correct date object
maxdays is max future date...
*/
function isDateScope(oDate,maxDays)
{
    // current date
    var thisDate = oDate;
    // calculated max date
    var maxDate = new Date(thisDate + (maxDays*1000*60*60));

    if (thisDate.getTime() - maxDate.getTime() < 0)
        {
        return false;
        }

    return true;

}

</script>
Avatar billede thomas_yde Nybegynder
06. januar 2005 - 12:43 #4
er timer og minutter altid angivet?
Avatar billede stoffer Nybegynder
06. januar 2005 - 12:44 #5
den er ikke testet. men den burde give en forskel. så kan du kombinere den med almindelig dato felt validering som her:

http://javascript.internet.com/forms/validate-date.html
http://www.google.com/search?hl=en&lr=&q=javascript+validate+date
Avatar billede thomas_yde Nybegynder
06. januar 2005 - 12:49 #6
Prøv at se om det her er noget du leder efter:
Det er måske ikke den smarteste men, se om du kan bruge det.

<BODY>

<P>&nbsp;</P>
<script>
function getE(id){return document.getElementById(id);}
function valider(inp1,inp2){
    var inpObj1 = getE(inp1);
    var inpObj2 = getE(inp2);
    var regExp = /([0-9]{1,2})+\/+([0-9]{1,2})+\/+([0-9]{1,4})+ +([0-9]{1,2})+:+([0-9]{1,2})/g;
    var inpObj1Val = "";
    var date1,date2;
    var nu = new Date();

    try{
        var dag="",mm="",yy="",hh="",min="";
        //fills date1
        inpObj1Val = inpObj1.value;
        dag = parseInt(inpObj1Val.replace(regExp,"$1"));
        mm = parseInt(inpObj1Val.replace(regExp,"$2"))-1;
        yy = parseInt(inpObj1Val.replace(regExp,"$3"));
        hh = parseInt(inpObj1Val.replace(regExp,"$4"));
        min = parseInt(inpObj1Val.replace(regExp,"$5"));
        if(!validateDate(yy,mm,dag,hh,min)){
            alert("FEJL i dato1!");
            inpObj1.focus();
            return false;
        }
        else{
            date1 = new Date(yy,mm,dag,hh,min,0,0);
            if(date1<nu){
                alert("dato1 må ikke ligge før idag");
                return false;
            }
        }       
        inpObj1Val = inpObj2.value;
        dag = parseInt(inpObj1Val.replace(regExp,"$1"));
        mm = parseInt(inpObj1Val.replace(regExp,"$2"))-1;
        yy = parseInt(inpObj1Val.replace(regExp,"$3"));
        hh = parseInt(inpObj1Val.replace(regExp,"$4"));
        min = parseInt(inpObj1Val.replace(regExp,"$5"));
        if(!validateDate(yy,mm,dag,hh,min)){
            alert("fjel i dato2!");
            inpObj2.focus();
            return false;
        }
        else{
            date2 = new Date(yy,mm,dag,hh,min,0,0);
            if(date2<nu){
                alert("dato2 må ikke ligge før idag");
                return false;               
            }
            else if(date2<date1){
                alert("dato2 må ikke ligge før dato1");
                return false;               
            }
        }       
           
    }
    catch(e){
        alert(e.message);
    }
}

function validateDate(yy,mm,dd,hh,min){
    try{
        d = new Date(yy,mm,dd,hh,min,0,0);

        if(d.getFullYear()!=yy || d.getMonth()!=mm || d.getDate()!=dd || d.getHours() != hh || d.getMinutes() != min){
            return false;
        }
        return true;
    }
    catch(e){
        alert(e.message);
    }   
}
</script>


tid1: <input type="text" id="tid1" value="06/01/2005 12:32"><br>
tid2: <input type="text" id="tid2" value="06/01/2005 12:32"><br>
<input type="button" onClick="valider('tid1','tid2');" value="Valider datoer">
</BODY>
Avatar billede donslund Nybegynder
06. januar 2005 - 14:12 #7
Hej Thomas.

Det ser rimeligt ud, men funktionen henter kun de 2 datoer ind. Min formular indeholder 6 felter som tidspunkterne skal dannes af.

start_dato
start_timer
start_minutter

slut_dato
slut_timer
slut_minutter
Avatar billede thomas_yde Nybegynder
06. januar 2005 - 14:41 #8
<script>
function getE(id){return document.getElementById(id);}

function valider(){

    var regExp = /([0-9]{1,2})+\/+([0-9]{1,2})+\/+([0-9]{1,4})+ +([0-9]{1,2})+:+([0-9]{1,2})/g;
    var inpObj1Val = "";
    var date1,date2;
    var nu = new Date();

    try{
        var dag="",mm="",yy="",hh="",min="";
        //fills date1
        inpObj1Val = getE("start_dato").value + " " +getE("start_timer").value +":"+getE("start_minutter").value;
        dag = parseInt(inpObj1Val.replace(regExp,"$1"));
        mm = parseInt(inpObj1Val.replace(regExp,"$2"))-1;
        yy = parseInt(inpObj1Val.replace(regExp,"$3"));
        hh = parseInt(inpObj1Val.replace(regExp,"$4"));
        min = parseInt(inpObj1Val.replace(regExp,"$5"));
        if(!validateDate(yy,mm,dag,hh,min)){
            alert("FEJL i dato1!");
            return false;
        }
        else{
            date1 = new Date(yy,mm,dag,hh,min,0,0);
            if(date1<nu){
                alert("dato1 må ikke ligge før idag");
                return false;
            }
        }       
        inpObj1Val = getE("slut_dato").value + " " +getE("slut_timer").value +":"+getE("slut_minutter").value;
        dag = parseInt(inpObj1Val.replace(regExp,"$1"));
        mm = parseInt(inpObj1Val.replace(regExp,"$2"))-1;
        yy = parseInt(inpObj1Val.replace(regExp,"$3"));
        hh = parseInt(inpObj1Val.replace(regExp,"$4"));
        min = parseInt(inpObj1Val.replace(regExp,"$5"));
        if(!validateDate(yy,mm,dag,hh,min)){
            alert("fjel i dato2!");
            return false;
        }
        else{
            date2 = new Date(yy,mm,dag,hh,min,0,0);
            if(date2<nu){
                alert("dato2 må ikke ligge før idag");
                return false;               
            }
            else if(date2<date1){
                alert("dato2 må ikke ligge før dato1");
                return false;               
            }
        }       
           
    }
    catch(e){
        alert(e.message);
    }
}

function validateDate(yy,mm,dd,hh,min){
    try{
        d = new Date(yy,mm,dd,hh,min,0,0);

        if(d.getFullYear()!=yy || d.getMonth()!=mm || d.getDate()!=dd || d.getHours() != hh || d.getMinutes() != min){
            return false;
        }
        return true;
    }
    catch(e){
        alert(e.message);
    }   
}
</script>

<fieldset>
    <legend>start dato tid</legend>
    start_dato: <input id="start_dato" name="start_dato" type="text" size="10" maxlength="10"><br>
    start_timer: <input id="start_timer" name="start_timer" type="text" size="2" maxlength="2"><br>
    start_minutter: <input id="start_minutter" name="start_minutter" type="text" size="2" maxlength="2"><br>
</fieldset><br><br>
<fieldset>
    <legend>start dato tid</legend>
    slut_dato: <input id="slut_dato" name="slut_dato" type="text" size="10" maxlength="10"><br>
    slut_timer: <input id="slut_timer" name="slut_timer" type="text" size="2" maxlength="2"><br>
    slut_minutter: <input id="slut_minutter" name="slut_minutter" type="text" size="2" maxlength="2"><br>
</fieldset>
<input type="button" onClick="valider();" value="Valider datoer">
</BODY>
Avatar billede thomas_yde Nybegynder
06. januar 2005 - 14:41 #9
Så kan du jo selv flytte rundt på de felter start og slut.

/thomas.yde
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester