Avatar billede Slettet bruger
14. januar 2004 - 12:48 Der er 6 kommentarer og
3 løsninger

Select box skal (de-)aktiveres udfra foregående kriterier

Hej

Jeg har nogle listbokse hvori der angives et starttidspunkt og et stoptidspunkt angivet i timer og minutter. Valgene består af 2 afdelinger med henholdsvis start og stop. Timer- og minutangivelser er delt op i hver deres listboks.

Jeg vil gerne have mit stoptidspunkt korrigeres i forhold til valgte starttidspunkt. Dvs. at hvis en bruger vælger starttidspunkt til kl. 13.30 skal det ikke være muligt at vælge et stoptidspunkt før 13.31 - I afdeling 2, skal det så ikke være muligt at angive et starttidspunkt før det valgte stoptidspunkt i afdeling 1.

Se http://www.flashfaq.dk/select.asp

Mvh, Michael
Avatar billede o-zone Nybegynder
14. januar 2004 - 14:59 #1
Nu ved jeg ikke hvad du skal bruge det til, men har du overvejet at systemet du søger (som jeg læser det) forhindrer folk i at vælge tider over et dato-skift
altså f.eks. fra 23:55 - 00:15?
Avatar billede o-zone Nybegynder
14. januar 2004 - 15:01 #2
Jeg kan godt programmere det til dig, men der ikke findes noget brugere hader mere, end at blive begrænset (især hvis de føler at det er uberettiget!).
Avatar billede Slettet bruger
14. januar 2004 - 18:50 #3
Systemet skal kun angive tider for en enkelt dag ad gangen.
Der er ikke tale 'uberettiget' begrænsning - derimod bliver der taget højde for fejlindtastninger hvilket kun kommer brugeren til gode :)
Avatar billede o-zone Nybegynder
15. januar 2004 - 02:12 #4
he he he ... det viste sig at være en liiidt svedig opgave, når man lige kom under motorhjelmen på den. Men jeg har vist fået flækket en nogenlunde idiotsikker løsning sammen nu. Jeg orker altså ikke at kommentere den fuldt ud (klokken er way over min sengetid :( ), men hvis du har spørgsmål, så stil dem her, så kan jeg svare dig senere!

Her er den fulde fil med udgangspunkt i din html (damn du får mange linier for dine 60 points ;-) )
---8<----------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test~~~</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
    background-color: #ffffff;
}
-->
</style>
<script language="javascript" type="text/javascript">
    // omdanner en talstreng til et tal. En tom streng giver tallet tomStreng.
    // tal : tal der skal parses
    // tomStreng : den værdi der skal returneres ved en tom streng
    function str2Tal(tal,tomStreng){
        if (tal=="") { tal = tomStreng; } // svarende til at det første index er valgt (uden value)
        return parseInt(tal);
    }

    // laver (min) tocifrede talstrenge ud af tal. dvs. 0 -> "00", 5 -> "05", 13 -> "13"
    function to2CifStr(tal){
        if (tal==0) { return "00"; }
        if (tal<10) { return "0"+tal; }
        return tal+"";
    }

    // sætter options på et select objekt til options med tocifrede talstrenge i value og text fra start til slut
    // element 0 røres ikke (element "Vælg yadayadayada")
    // selectElement : det selectElement der skal have options manipuleret
    // start : options rækken startende fra (fra og med) dvs. første tal i element [1]
    // slut : options rækken sluttende ved (til og med) dvs. sidste tal i element [n]
    function setOptions(selectElement,start,slut){
        for(var i=start;i<=slut;i++){
            selectElement.options[i-start+1] = new Option(to2CifStr(i),to2CifStr(i));
        }
        selectElement.options.length = slut+2-start;
    }
   
    function startTimeSat(tal){
        tal = str2Tal(tal,0);
        setOptions(document.form.stoph1,tal,23);
    }

    function startMinutSat(tal){
        if (document.form.starth1.options[document.form.starth1.selectedIndex].value==document.form.stoph1.options[document.form.stoph1.selectedIndex].value){
            // er start time og slut time ens må slutminut ikke være lavere end startminut
            tal = str2Tal(tal,0);
            if (tal==59){ // er startmin 59 kan slut time ikke være samme time
                setOptions(document.form.stopm1,0,59);
                if (document.form.stoph1.selectedIndex!=document.form.stoph1.options.length-1){
                    // er det ikke det sidste index, så ryk een ned
                    document.form.stoph1.selectedIndex = document.form.stoph1.selectedIndex+1;
                } else {
                    // er det sidste index, så vælg index 0 ("vælg yadayadayada")
                    document.form.stoph1.selectedIndex = 0;
                }
            } else {
                // sæt slutminuttallisten til startminut+1 - 59
                setOptions(document.form.stopm1,tal+1,59);
            }
        }
    }

    function slutTimeSat(tal){
        tal = str2Tal(tal,0);
        if (document.form.starth1.options[document.form.starth1.selectedIndex].value==document.form.stoph1.options[document.form.stoph1.selectedIndex].value){
            if (str2Tal(document.form.startm1.options[document.form.startm1.selectedIndex].value,0)!=59){
                setOptions(document.form.stopm1,str2Tal(document.form.startm1.options[document.form.startm1.selectedIndex].value,0)+1,59);
            } else {
                setOptions(document.form.stopm1,0,59);
                if (document.form.stoph1.selectedIndex!=document.form.stoph1.options.length-1){
                    document.form.stoph1.selectedIndex = document.form.stoph1.selectedIndex+1;
                } else {
                    document.form.stoph1.selectedIndex = 0;
                }
            }
        } else {
            setOptions(document.form.stopm1,0,59);
        }
    }

    function startTime2Sat(tal){
        tal = str2Tal(tal,59);
        if (document.form.starth2.options[document.form.starth2.selectedIndex].value==document.form.stoph2.options[document.form.stoph2.selectedIndex].value){
            if(str2Tal(document.form.stopm2.options[document.form.stopm2.selectedIndex].value,59)==0){
                setOptions(document.form.startm2,0,59);
                document.form.starth2.selectedIndex = document.form.starth2.selectedIndex-1;
            } else {
                setOptions(document.form.startm2,0,str2Tal(document.form.stopm2.options[document.form.stopm2.selectedIndex].value,59)-1);
            }
        } else {
            setOptions(document.form.startm2,0,59);
        }
    }
    function slutTime2Sat(tal){
        tal = str2Tal(tal,23);
        setOptions(document.form.starth2,0,tal);
    }
    function slutMinutSat(tal){
        if (document.form.starth2.options[document.form.starth2.selectedIndex].value==document.form.stoph2.options[document.form.stoph2.selectedIndex].value){
            tal = str2Tal(tal,59);
            if (tal==0){
                setOptions(document.form.startm2,0,59);
                document.form.starth2.selectedIndex = document.form.starth2.selectedIndex-1;
            } else {
                setOptions(document.form.startm2,0,tal-1);
            }
        }
        // burde også checke for minut 00 hvilket burde medføre start time-- start minuter 00-59
    }
</script>
</head>

<body>
<form name="form" method="post" action="">
  <p>&nbsp;  </p>
  <table  border="0" cellspacing="1" cellpadding="2">
    <tr>
      <td><select name="starth1" id="select8" onchange="startTimeSat(this.options[this.selectedIndex].value); return true;">
        <option selected>Start time</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
      </select></td>
      <td><select name="startm1" id="select9" onchange="startMinutSat(this.options[this.selectedIndex].value); return true;">
        <option selected>Start minut</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">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>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
      </select></td>
      <td>--&gt;</td>
      <td><select name="stoph1" id="select10" onchange="slutTimeSat(this.options[this.selectedIndex].value); return true;">
        <option selected>Stop time</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
      </select></td>
      <td><select name="stopm1" id="select11">
        <option selected>Stop minut</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">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>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
      </select></td>
    </tr>
    <tr>
      <td><select name="starth2" id="select12" onchange="startTime2Sat(this.options[this.selectedIndex].value); return true;">
        <option selected>Start time</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
      </select></td>
      <td><select name="startm2" id="select13">
        <option selected>Start minut</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">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>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
      </select></td>
      <td>--&gt;</td>
      <td><select name="stoph2" id="select14" onchange="slutTime2Sat(this.options[this.selectedIndex].value); return true;">
        <option selected>Stop time</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">19</option>
        <option value="20">20</option>
        <option value="21">21</option>
        <option value="22">22</option>
        <option value="23">23</option>
      </select></td>
      <td><select name="stopm2" id="select15" onchange="slutMinutSat(this.options[this.selectedIndex].value); return true;">
        <option selected>Stop minut</option>
        <option value="00">00</option>
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</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">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>
        <option value="32">32</option>
        <option value="33">33</option>
        <option value="34">34</option>
        <option value="35">35</option>
        <option value="36">36</option>
        <option value="37">37</option>
        <option value="38">38</option>
        <option value="39">39</option>
        <option value="40">40</option>
        <option value="41">41</option>
        <option value="42">42</option>
        <option value="43">43</option>
        <option value="44">44</option>
        <option value="45">45</option>
        <option value="46">46</option>
        <option value="47">47</option>
        <option value="48">48</option>
        <option value="49">49</option>
        <option value="50">50</option>
        <option value="51">51</option>
        <option value="52">52</option>
        <option value="53">53</option>
        <option value="54">54</option>
        <option value="55">55</option>
        <option value="56">56</option>
        <option value="57">57</option>
        <option value="58">58</option>
        <option value="59">59</option>
      </select></td>
    </tr>
  </table>
</form>


</body>
</html>
---8<----------
... håber at du kan bruge det!
(-:H@zze
Avatar billede o-zone Nybegynder
15. januar 2004 - 02:14 #5
hmmm linie 112
"        // burde også checke for minut 00 hvilket burde medføre start time-- start minuter 00-59"
Kan du jo så se bort fra, for det HAR jeg fikset! ;-)
Avatar billede o-zone Nybegynder
15. januar 2004 - 02:23 #6
ævs ... sidste lille ting inden jeg vil se dyner:
På min IE 6.0 giver parseInt("08") og parseInt("09") af uransagelige grunde ikke fornuftige resultater (er der nogen derude der kan forklare det???)
Men hvis du retter linie 20 fra
"return parseInt(tal);"
til
"return tal/1;"
så virker alt fint her hos mig :-?
Det er godt nok en underlig fejl
parseInt("07") = 7
parseInt("08") = 0
StRaNgE!!!
nat nat!
Avatar billede Slettet bruger
15. januar 2004 - 13:44 #7
Ja - jeg tænkte nok at der skulle et par linier kode til ;)

Første sektion syntes at køre som jeg forventede - men anden sektion følger ikke rigtigt med.?!.. har ikke selv haft tid til at kigge på koden - gør det senere og vender til tilbage hvis det er ok.

Ellers skal du have mange tak for din indsats og hjælp :)

Mvh, Michael
Avatar billede Slettet bruger
15. januar 2004 - 13:45 #8
Hmmm... Jeg kan ikke acceptere dit svar ???
Avatar billede Slettet bruger
15. januar 2004 - 13:46 #9
Aaarhhh... sådan gør man nu ....
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