Avatar billede tangveje Nybegynder
20. juni 2007 - 12:54 Der er 12 kommentarer og
1 løsning

Validering af 2 selects

Jeg har 2 select felter, en med kategorier og en med nogle elementer organiseret under kategorierne fra det første felt. F.eks. således:

<select name="category">
  <option>Foo</option>
  <option>Bar</option>
</select>

<select name="something">
  <optgroup label="Foo">
    <option>X</option>
    <option>Y</option>
  </optgroup>
 
  <optgroup label="Bar">
    <option>Z</option>
  </optgroup>
</select>

Når brugeren sender formularen skal jeg sikre mig at det element der er valgt i "something" boxen ligger i den samme kategori der er valgt i "category" boxen.

F.eks. hvis jeg vælger "Z" i "something" boxen skal jeg også have valgt "Bar" i "category" boxen.

Giver det mening, og hvordan kunne jeg skrue det sammen?
Avatar billede horsmark Nybegynder
20. juni 2007 - 12:55 #1
Avatar billede tangveje Nybegynder
20. juni 2007 - 13:01 #2
Noget i den retning, ja. Jeg vil dog foretrække at beholde mine optgroups, og først checke ved submit.
Avatar billede horsmark Nybegynder
20. juni 2007 - 13:07 #3
hvorfor have valgmuligheder der ikke er reelle valgmuligheder ? Jeg mener jeg ville som bruger være træt af at vælge Foo i første og Z i næste og derefter få en alert... nørj jeg ville blive mægtig træt af det :-)
Avatar billede tangveje Nybegynder
20. juni 2007 - 13:14 #4
Så kan man som bruger bare læse vejledningen ;)

Du har nok ret i at det ville være smartere, jeg synes bare det virker fint som jeg har det nu.
Avatar billede olebole Juniormester
20. juni 2007 - 13:39 #5
<ole>

"Så kan man som bruger bare læse vejledningen"

- i så fald bør man som webdesigner/-arkitekt nok lære at designe så logisk, at vejledninger ikke er nødvendige  ;o)

/mvh
</bole>
Avatar billede horsmark Nybegynder
20. juni 2007 - 13:42 #6
.oO(Kidnapper snart Ole til en skummelt sted... skruer hans hjerne af... skruer derefter mit eget hovede af ... hælder så forsigtigt oles hjerne ud af hans øre og ned i mit øre... derefter skruer jeg vores hoveder på igen og stiller Ole forsigtigt tilbage hvor jeg stjal ham...)
Avatar billede tangveje Nybegynder
20. juni 2007 - 13:48 #7
Det var naturligvis en joke ;) Jeg går altid meget op i at gøre tingene intuitive, så vidt det er muligt.
Avatar billede olebole Juniormester
20. juni 2007 - 14:38 #8
Hehe ... det var nu også blot en joke herfra ... omend den dog rummer spor af sandhed  ;o)
Avatar billede tangveje Nybegynder
20. juni 2007 - 15:46 #9
Så sandt :)

Jeg vil prøve at tilpasse roenvings script, og se hvordan det ender. I har jo desværre nok ret i at det er en bedre løsning.
Avatar billede roenving Novice
20. juni 2007 - 16:19 #10
-- og jeg har lavet nogle simplere løsninger, hvis det kun er to selects, da ovenstående er designet til at være skalérbar (supporterer efter min viden et uendeligt antal selects !-)

Se f.eks. i http://www.eksperten.dk/spm/615326 !o]
Avatar billede tangveje Nybegynder
20. juni 2007 - 16:39 #11
Ok... det kan jeg slet ikke overskue. Ved ikke om jeg bare er for træt, men det vil slet ikke som jeg vil. Her er hele min formular, øger gerne pointsne hvis nogen kan få omskrevet den med ovenstående script.

Læg mærke til at "relation" boxen SKAL have en "none" option hele tiden, hvorimod "category" ikke skal have en sådan. Hver option i "relation" boxen skal have en value, som her, ellers går der ged i mit system.

<form method="post" action="./" onsubmit="return validateAdd( this )">
<div>
    <input type="hidden" name="add" value="true" />
           
    <label>URL</label> <input type="text" name="url" maxlength="64" /><br /><br />
               
    <label>Title</label> <input type="text" name="title"  maxlength="40" /><br />
    <label>Number</label> <input type="text" name="number" maxlength="3" /><br /><br />
               
    <label>Description</label> <input type="text" name="description" maxlength="64" /><br /><br />
               
    <label>Category</label>
    <select name="category" id="category">
        <?php                       
            $res = mysql_query( 'SELECT * FROM categories' ) ;               
            while ( $row = mysql_fetch_array( $res ) )
            {
                echo '<option>' . $row['title'] . '</option>' ;
            }                     
        ?>     
    </select><br /><br />
               
    <label>Relation</label>
    <select name="relation" id="relation">
        <option value="0">None</option>
        <?php                       
            $res = mysql_query( 'SELECT * FROM categories' ) ;               
            while ( $row = mysql_fetch_array( $res ) )
            {
                echo '<optgroup label="' . $row['title'] . '">' ;
                                       
                $cid = $row['id'] ;
                $x = mysql_query( "SELECT * FROM threads WHERE category = $cid AND relation = 0 ORDER BY title" ) ;               
                while ( $y = mysql_fetch_array( $x ) )
                {
                    echo '<option value="' . $y['id'] . '">' . $y['title'] . '</option>' ;
                }
                           
                echo '</optgroup>' ;
            }                     
        ?>               
    </select><br /><br />
               
    <label class="blank">&nbsp;</label> <input type="submit" value="Add Page" />
</div>
</form>
Avatar billede tangveje Nybegynder
26. august 2007 - 21:51 #12
Fik endelig lavet min egen lille løsning, som så vidt ser ud til at virke perfekt.

Nogen af jer der ønsker points? Ellers ta'r jeg dem alle selv, så der kan blive lukket her :)
Avatar billede horsmark Nybegynder
27. august 2007 - 07:08 #13
stik dem til ylebyle :-)
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