Avatar billede and_ Nybegynder
13. januar 2005 - 12:54 Der er 12 kommentarer og
1 løsning

sammenlign 2 datoer

Jeg har 2 datoer i formatet:

var fra = "13-1-2005" //Vi gaar ud fra dags dato
var til = "13-1-2005" //13 Januar 2005

Hvordan kan jeg sammenligne disse 2?

Jeg har prøvet at strikke dette sammen, men det vil ikke rigtig:

<script language="javascript">
var fra = "13-1-2005" //Vi gaar ud fra dags dato
var til = "13-1-2005" //13 Januar 2005
var sikkerDato = window.confirm("Fra og til dato er éns!\n\nEr du sikker på at du vil fortsætte?");
if(fra == til)
{
    if (!sikkerDato)
    {
        return false;
    }
}
</script>
Avatar billede yellow Nybegynder
13. januar 2005 - 13:26 #1
hmm, viser det med et eksempel - kan ikke lige finde ud af sammenhængen i dit:

<script type="text/javascript">
  function validateForm( myForm ){
    return (myForm.fra.value==myForm.til.value)?confirm("Fra og til dato er éns!\n\nEr du sikker på at du vil fortsætte?"):true; 
  }
</script>
<body>
<form onsubmit="return validateForm( this );">
  <input type="text" name="fra">
  <input type="text" name="til">
  <input type="submit">
</form>
</body>
Avatar billede and_ Nybegynder
13. januar 2005 - 13:32 #2
kan ikke bruge onsubmit!
Avatar billede and_ Nybegynder
13. januar 2005 - 14:01 #3
Så må jeg jo ridse det lidt mere op:

<script language="javascript">
    function kor()
    {
        var fra = document.getElementById('fra').value;
        var til = document.getElementById('til').value;
        var sikkerDato = window.confirm("Fra og til dato er éns!\n\nEr du sikker på at du vil fortsætte?");

        if(fra == til)
        {
            if (!sikkerDato)
            {
                return false;
            }
        }
        alert("alt ok, fortsætter....");
    }
</script>
Fra: <input type="text" name="fra" id="fra" value="13-1-2005"><br>
Til: <input type="text" name="til" id="til" value="13-1-2005"><br><br>
<input type="button" value="clicky" onclick="kor()">
Avatar billede and_ Nybegynder
13. januar 2005 - 14:03 #4
selvom du ændrer den ene dato, får jeg stadig besked på at den er éns...

Pørv at kopiere ind i en fil og kør det...
Avatar billede yellow Nybegynder
13. januar 2005 - 14:07 #5
onsubmit eller ej...forskellen er den samme ;-)

<script type="text/javascript">
  function kor(){
    var fra = document.getElementById('fra').value;
    var til = document.getElementById('til').value;
    if(fra==til)
      if( confirm("Fra og til dato er éns!\n\nEr du sikker på at du vil fortsætte?") ){
        alert('ok så fortsætter');
      }
      else{
        return false;
      }
  } 
</script>
<body>
  <input type="text" name="fra">
  <input type="text" name="til">
  <input type="button" onclick="kor();">
</body>
Avatar billede yellow Nybegynder
13. januar 2005 - 14:15 #6
til forklaring:
var sikkerDato = window.confirm("Fra og til dato er éns!\n\nEr du sikker på at du vil fortsætte?");

Allerede der kommer din popup confirm - altså før du bruger den i if sætningen.
Avatar billede and_ Nybegynder
13. januar 2005 - 14:22 #7
hhmm... har da ellers brugt var sikker = window.confirm("bal bla bal") før...
Men fair nok, det virker... smid et svar :p
Avatar billede and_ Nybegynder
13. januar 2005 - 14:27 #8
smider 15 mere på og kommer med et tillægs-spg:

Hvordan kan jeg så tjekker på om til-datoen er før fra-datoen?
Prøvede dette...

    if (til < fra)
    {
        alert("Du kan ikke sætte til-datoen til at være før startdatoen!");
        return false;
    }

Virker egentlig også fint, sålænge jeg bare ikke ikke skifte datoerne til at være:

fra "13-1-2006"
til "13-1-2005"

Det fejler den ikke med...
Har du et godt råd?
Avatar billede yellow Nybegynder
13. januar 2005 - 15:39 #9
så skal du sammenligne på dato objekter i stedet for strenge:
<script type="text/javascript">
  function kor(){
    var aFra = document.getElementById('fra').value.split("-");
    var fra = new Date(aFra[2],aFra[1],aFra[0]);
    var aTil = document.getElementById('til').value.split("-");
    var til = new Date(aTil[2],aTil[1],aTil[0]);       

    if(fra>=til)
      if( confirm("Fra er større end eller lig til!\n\nEr du sikker på at du vil fortsætte?") ){
        alert('ok så fortsætter');
      }
      else{
        return false;
      }
  } 
</script>
<body>
  <input type="text" name="fra">
  <input type="text" name="til">
  <input type="button" onclick="kor();">
</body>

Hvis du bruger dette burde du så også checke for om det rigtige datoformat er indtastet (dvs dd-mm-yyyy)
Avatar billede yellow Nybegynder
13. januar 2005 - 15:39 #10
og svar
Avatar billede and_ Nybegynder
13. januar 2005 - 17:29 #11
Sad lige og kiggede det nærmere efter i sømmene...
Men dit eks, giver jo ikke nogen mening...

Der er ingen forskel for hvad du gjorde før, Kan godt se at laver aFra og aTil, men du bruger dem jo ikke?????

Jeg er lidt på herrens mark, når jeg skal lege med datoer...
Avatar billede and_ Nybegynder
13. januar 2005 - 17:31 #12
Datoformatet kan ikke "fuskes" da det kommer fra 3 selects :p
Avatar billede yellow Nybegynder
14. januar 2005 - 13:37 #13
Som du sagde lavede jeg aFra og aTil...og jeg bruger dem! :-)
    var aFra = document.getElementById('fra').value.split("-");
    var fra = new Date(aFra[2],aFra[1],aFra[0]); <-- i denne linie.

Anyway, du kan lave det samme fra 3 selects hvis du tildeler variablerne således:
    var fraDag = document.getElementById('fraDagSelect').value;
    var fraMaaned = document.getElementById('fraMaanedSelect').value;
    var fraAar = document.getElementById('fraAarSelect').value;
    var fra = new Date(fraAar,fraMaaned,fraDag);

    var tilDag = document.getElementById('tilDagSelect').value;
    var tilMaaned = document.getElementById('tilMaanedSelect').value;
    var tilAar = document.getElementById('tilAarSelect').value;
    var til = new Date(tilAar,tilMaaned,tilDag);
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

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