Avatar billede nidyahou Praktikant
15. oktober 2008 - 14:08 Der er 15 kommentarer og
1 løsning

funktion til validering af dato virker ikke

function ValidateDate() {
            var SDateD = document.getElementById(FM_start_dag).value;
            var SDateM = document.getElementById(FM_start_mrd).value;
            var SDateY = document.getElementById(FM_start_aar).value;
            var SDateH = document.getElementById(klok_timer).value;
            var SDateMm = document.getElementById(klok_min).value;
           
            var EDateD = document.getElementById(FM_slut_dag).value;
            var EDateM = document.getElementById(FM_slut_mrd).value;
            var EDateY = document.getElementById(FM_slut_aar).value;
            var EdateH = document.getElementById(klok_timer_slut).value;
            var EdateMm = document.getElementById(klok_min_slut).value;
           
            var alertReason1 = 'Slut Dato skal være efter eller den samme som startdatoen.'

            var endDate = new Date(EDateD + "-" + EDateM + "-" + EDateY + " " + EdateH + ":" + EdateMm);
            var startDate = new Date(SDateD + "-" + SDateM + "-" + SDateY + " " + SDateH + ":" + SDateMm);

            if (startDate > endDate) {
                alert(alertReason1);
                document.getElementById(FM_slut_dag).value = document.getElementById(FM_start_dag).value;
                document.getElementById(FM_slut_mrd).value = document.getElementById(FM_start_mrd).value;
                document.getElementById(FM_slut_aar).value = document.getElementById(FM_start_aar).value;
                return false;
            }
        }
Avatar billede w13 Novice
15. oktober 2008 - 14:17 #1
Du gør det ikke let for os, når vi selv skal gætte, hvad problemet er. =)
"Virker ikke" er jo et meget vidt begreb. F.eks.: validerer den, men den validerer forkert? Får du en JavaScript-fejlmeddelelse, for de er jo til for at hjælpe med at løse problemet? Sker der slet ingen ting? Kan vi se hele din kode, eller endnu bedre, et link til problemet? Osv. :)

Men skal du ikke have anførselstegn rundt om dine getElementById-værdier?

function ValidateDate() {
            var SDateD = document.getElementById("FM_start_dag").value;
            var SDateM = document.getElementById("FM_start_mrd").value;
            var SDateY = document.getElementById("FM_start_aar").value;
            var SDateH = document.getElementById("klok_timer").value;
            var SDateMm = document.getElementById("klok_min").value;
           
            var EDateD = document.getElementById("FM_slut_dag").value;
            var EDateM = document.getElementById("FM_slut_mrd").value;
            var EDateY = document.getElementById("FM_slut_aar").value;
            var EdateH = document.getElementById("klok_timer_slut").value;
            var EdateMm = document.getElementById("klok_min_slut").value;
           
            var alertReason1 = "Slut Dato skal være efter eller den samme som startdatoen.";

            var endDate = new Date(EDateD + "-" + EDateM + "-" + EDateY + " " + EdateH + ":" + EdateMm);
            var startDate = new Date(SDateD + "-" + SDateM + "-" + SDateY + " " + SDateH + ":" + SDateMm);

            if (startDate > endDate) {
                alert(alertReason1);
                document.getElementById("FM_slut_dag").value = document.getElementById("FM_start_dag").value;
                document.getElementById("FM_slut_mrd").value = document.getElementById("FM_start_mrd").value;
                document.getElementById("FM_slut_aar").value = document.getElementById("FM_start_aar").value;
                return false;
            }
        }
Avatar billede nidyahou Praktikant
15. oktober 2008 - 14:48 #2
Det er rigtigt - sry ;) Det jeg mente var at der bare slet ikke sker noget som helst. Ingen reaktion. Hvis du skal se hele koden får du nok ret lange løg. Det er viklet ind i 2040 liniers asp, men jeg kalder med Onchange="ValidateDate();"
Avatar billede w13 Novice
15. oktober 2008 - 14:50 #3
Har du andet JavaScript, som kan være relateret til det, du viser?

F.eks. kan du jo ikke skrive:

var SDateD = document.getElementById(FM_start_dag).value;

som skal være:

var SDateD = document.getElementById("FM_start_dag").value;

med mindre FM_start_dag er en variable. Har du prøvet mit forslag?
Avatar billede nidyahou Praktikant
15. oktober 2008 - 16:43 #4
yeah jeg ændrede det, der sker desværre ikke så meget.
Avatar billede w13 Novice
15. oktober 2008 - 18:16 #5
Og du kan ikke smide et link til det? Det ville lette det meget.
Avatar billede w13 Novice
15. oktober 2008 - 18:24 #6
Hvor har du i øvrigt funktionen fra? Har den nogensinde virket? Altså _burde_ den virke? :)
Avatar billede roenving Novice
16. oktober 2008 - 16:28 #7
-- den bør vel ikke virke, hvis man ikke tager højde for javascripts behandling af månedsnumre som index, hvor januar er 0, februar er 1 og december er 11 ...

-- derudover sammenligner du et Date-objekt med et andet Date-objekt direkte og det vil derfor være .toString-tingen, der bliver sammenlignet, prøv at kalde f.eks. .getTime() ...

-- og da du alligevel konstruerer Date-objektet ud fra en stribe tekster, der indeholder tal, kan du ligesågodt bruge tal-constructoren:

...
            var endDate = new Date(+EDateY,+EDateM-1,+EDateD,+EdateH,+EdateMm);
            var startDate = new Date(+SDateY,+SDateM-1,+SDateD,+SDateH,+SDateMm);

            if (startDate.getTime() > endDate.getTime()) {
...

+'erne er en direkte konvertering til tal !-)
Avatar billede nidyahou Praktikant
18. oktober 2008 - 17:30 #8
Selvom jeg ændrer spiller det desværre ikke - der er ikke rigtigt nogen reaktion.
Avatar billede nidyahou Praktikant
18. oktober 2008 - 17:33 #9
ser sådan her ud:

        function ValidateDate() {
            var SDateD = document.getElementById("FM_start_dag").value;
            var SDateM = document.getElementById("FM_start_mrd").value;
            var SDateY = document.getElementById("FM_start_aar").value;
            var SDateH = document.getElementById("klok_timer").value;
            var SDateMm = document.getElementById("klok_min").value;

            var EDateD = document.getElementById("FM_slut_dag").value;
            var EDateM = document.getElementById("FM_slut_mrd").value;
            var EDateY = document.getElementById("FM_slut_aar").value;
            var EdateH = document.getElementById("klok_timer_slut").value;
            var EdateMm = document.getElementById("klok_min_slut").value;

            var alertReason1 = "Slut Dato skal være efter eller den samme som startdatoen.";

            var endDate = new Date(+EDateY, +EDateM - 1, +EDateD, +EdateH, +EdateMm);
            var startDate = new Date(+SDateY, +SDateM - 1, +SDateD, +SDateH, +SDateMm);

            if (startDate.getTime() > endDate.getTime()) {
                alert(alertReason1);
                document.getElementById("FM_slut_dag").value = document.getElementById("FM_start_dag").value;
                document.getElementById("FM_slut_mrd").value = document.getElementById("FM_start_mrd").value;
                document.getElementById("FM_slut_aar").value = document.getElementById("FM_start_aar").value;
                return false;
            }
        }
Avatar billede w13 Novice
18. oktober 2008 - 17:41 #10
Vi må nok se, hvordan du bruger det. Hvordan ser din formular ud?
Avatar billede nidyahou Praktikant
18. oktober 2008 - 19:36 #11
<td style="padding-left:10;">Startdato:</td></td>
    <td colspan="2">

                <select name="FM_start_dag" Onchange="ValidateDate()">
               
        <option value="1" >1</option>

       
        <option value="2" >2</option>
       
        <option value="3" >3</option>
       
        <option value="4" >4</option>
       
        <option value="5" >5</option>
       
        <option value="6" >6</option>
       
        <option value="7" >7</option>

       
        <option value="8" >8</option>
       
        <option value="9" >9</option>
       
        <option value="10" >10</option>
       
        <option value="11" >11</option>
       
        <option value="12" >12</option>
       
        <option value="13" >13</option>

       
        <option value="14" >14</option>
       
        <option value="15" >15</option>
       
        <option value="16" >16</option>
       
        <option value="17" >17</option>
       
        <option value="18"  selected>18</option>
       
        <option value="19" >19</option>

       
        <option value="20" >20</option>
       
        <option value="21" >21</option>
       
        <option value="22" >22</option>
       
        <option value="23" >23</option>
       
        <option value="24" >24</option>
       
        <option value="25" >25</option>

       
        <option value="26" >26</option>
       
        <option value="27" >27</option>
       
        <option value="28" >28</option>
       
        <option value="29" >29</option>
       
        <option value="30" >30</option>
       
        <option value="31" >31</option>

        </select>
               
                <select name="FM_start_mrd" Onchange="ValidateDate()">
               
        <option value="1"> jan</option>

        <option value="2"> feb</option>

        <option value="3"> mar</option>

        <option value="4"> apr</option>

        <option value="5"> maj</option>

        <option value="6"> jun</option>

        <option value="7"> jul</option>

        <option value="8"> aug</option>

        <option value="9"> sep</option>

        <option value="10" selected> okt</option>

        <option value="11"> nov</option>

        <option value="12"> dec</option>

                </select>
               
                <select name="FM_start_aar" Onchange="ValidateDate()">
               
        <option value="2003">2003</option>
       
        <option value="2004">2004</option>
       
        <option value="2005">2005</option>

       
        <option value="2006">2006</option>
       
        <option value="2007">2007</option>
       
        <option value="2008" selected>2008</option>
       
        <option value="2009">2009</option>
       
        <option value="2010">2010</option>
       
        <option value="2011">2011</option>

       
        <option value="2012">2012</option>
       
        <option value="2013">2013</option>
       
                </select>&nbsp;&nbsp;
                <a href="java script:NewWin_popupcal('../inc/regular/popupcalender_inc.asp?use=1')"><img src="../ill/popupcal.gif" alt="" border="0" width="16" height="15"></a>
    </td>
    <td></td></tr>
    <tr>
        <td valign="top"></td>

        <td style="padding-left:10; width:100px;">Start tidspunkt:
        </td><td><select name="klok_timer" Onchange="ValidateDate()">
        strSelVal=19
        <option value="0" >0</option>
       
        <option value="1" >1</option>
       
        <option value="2" >2</option>
       
        <option value="3" >3</option>
       
        <option value="4" >4</option>

       
        <option value="5" >5</option>
       
        <option value="6" >6</option>
       
        <option value="7" >7</option>
       
        <option value="8" >8</option>
       
        <option value="9" >9</option>
       
        <option value="10" >10</option>

       
        <option value="11" >11</option>
       
        <option value="12" >12</option>
       
        <option value="13" >13</option>
       
        <option value="14" >14</option>
       
        <option value="15" >15</option>
       
        <option value="16" >16</option>

       
        <option value="17" >17</option>
       
        <option value="18" >18</option>
       
        <option value="19"  selected>19</option>
       
        <option value="20" >20</option>
       
        <option value="21" >21</option>
       
        <option value="22" >22</option>

       
        <option value="23" >23</option>
       
          </select>&nbsp;:
       
        <select name="klok_min" Onchange="ValidateDate()">
       
        <option value="00"  selected>00</option>
       
        <option value="15" >15</option>
       
        <option value="30" >30</option>
       
        <option value="45" >45</option>

       
        </select>
        </td>
        <td>&nbsp;</td>
        <td valign="top" align="right"></td>
        </tr>
        <tr valign="top"><td></td><td style="padding-left:10;">Slutdato:</td>
        <td colspan="2">                <select name="FM_slut_dag" Onchange="ValidateDate()">
               
        <option value="1" >1</option>

       
        <option value="2" >2</option>
       
        <option value="3" >3</option>
       
        <option value="4" >4</option>
       
        <option value="5" >5</option>
       
        <option value="6" >6</option>
       
        <option value="7" >7</option>

       
        <option value="8" >8</option>
       
        <option value="9" >9</option>
       
        <option value="10" >10</option>
       
        <option value="11" >11</option>
       
        <option value="12" >12</option>
       
        <option value="13" >13</option>

       
        <option value="14" >14</option>
       
        <option value="15" >15</option>
       
        <option value="16" >16</option>
       
        <option value="17" >17</option>
       
        <option value="18"  selected>18</option>
       
        <option value="19" >19</option>

       
        <option value="20" >20</option>
       
        <option value="21" >21</option>
       
        <option value="22" >22</option>
       
        <option value="23" >23</option>
       
        <option value="24" >24</option>
       
        <option value="25" >25</option>

       
        <option value="26" >26</option>
       
        <option value="27" >27</option>
       
        <option value="28" >28</option>
       
        <option value="29" >29</option>
       
        <option value="30" >30</option>
       
        <option value="31" >31</option>

        </select>
               
                <select name="FM_slut_mrd" Onchange="ValidateDate()">
               
        <option value="1"> jan</option>

        <option value="2"> feb</option>

        <option value="3"> mar</option>

        <option value="4"> apr</option>

        <option value="5"> maj</option>

        <option value="6"> jun</option>

        <option value="7"> jul</option>

        <option value="8"> aug</option>

        <option value="9"> sep</option>

        <option value="10" selected> okt</option>

        <option value="11"> nov</option>

        <option value="12"> dec</option>

                </select>
               
                <select name="FM_slut_aar" Onchange="ValidateDate()">
               
        <option value="2003">2003</option>
       
        <option value="2004">2004</option>
       
        <option value="2005">2005</option>

       
        <option value="2006">2006</option>
       
        <option value="2007">2007</option>
       
        <option value="2008" selected>2008</option>
       
        <option value="2009">2009</option>
       
        <option value="2010">2010</option>
       
        <option value="2011">2011</option>

       
        <option value="2012">2012</option>
       
        <option value="2013">2013</option>
       
                </select>&nbsp;&nbsp;
                <a href="java script:NewWin_popupcal('../inc/regular/popupcalender_inc.asp?use=4')"><img src="../ill/popupcal.gif" alt="" border="0" width="16" height="15"></a></td>
        <td></td></tr>
        <tr>
        <td valign="top"></td>
        <td style="padding-left:10;">Slut tidspunkt:
        </td><td>

        <select name="klok_timer_slut" Onchange="ValidateDate()">
        strSelVal=19
        <option value="0" >0</option>
       
        <option value="1" >1</option>
       
        <option value="2" >2</option>
       
        <option value="3" >3</option>
       
        <option value="4" >4</option>

       
        <option value="5" >5</option>
       
        <option value="6" >6</option>
       
        <option value="7" >7</option>
       
        <option value="8" >8</option>
       
        <option value="9" >9</option>
       
        <option value="10" >10</option>

       
        <option value="11" >11</option>
       
        <option value="12" >12</option>
       
        <option value="13" >13</option>
       
        <option value="14" >14</option>
       
        <option value="15" >15</option>
       
        <option value="16" >16</option>

       
        <option value="17" >17</option>
       
        <option value="18" >18</option>
       
        <option value="19"  selected>19</option>
       
        <option value="20" >20</option>
       
        <option value="21" >21</option>
       
        <option value="22" >22</option>

       
        <option value="23" >23</option>
       
          </select>&nbsp;:
       
        <select name="klok_min_slut" Onchange="ValidateDate()">
       
        <option value="00"  selected>00</option>
       
        <option value="15" >15</option>
       
        <option value="30" >30</option>
       
        <option value="45" >45</option>

       
        </select>
Avatar billede w13 Novice
18. oktober 2008 - 19:39 #12
Din JavaScript-kode bruger jo id'er til at referere til dine felter, men dine felter har ikke id'er, kun name-værdier:

<select name="FM_start_dag" Onchange="ValidateDate()">

Så i ovenstående linje skulle f.eks. tilføjes:

<select id="FM_start_dag" name="FM_start_dag" Onchange="ValidateDate()">
Avatar billede nidyahou Praktikant
27. oktober 2008 - 10:33 #13
en væsentlig poientering der rent faktisk løser mit problem. Det var forholdsvist dårligt set af mig, men lækkert at du spottede det. Jeg takker 1000 gange. Drop svar :)
Avatar billede w13 Novice
27. oktober 2008 - 11:32 #14
;)
Avatar billede w13 Novice
27. oktober 2008 - 13:28 #15
Hvis du skriver onchange i stedet for Onchange (dvs. med små bogstaver) kan du i øvrigt bedre skifte til XHTML, når det en dag bliver understøttet af browserne. Det kræver nemlig, at attributnavne står med småt.
Avatar billede nidyahou Praktikant
30. oktober 2008 - 15:28 #16
Så blev jeg også så meget klogere - tak :)
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