Avatar billede rzj Nybegynder
31. januar 2003 - 11:49 Der er 14 kommentarer og
1 løsning

value af select og elseif()

Altså enten er jeg blind idag (sådan har man det jo nogle gange) eller også er der noget galt ;-)
Jeg satser på det sidste. I nedenstående form/script vil jeg bare gerne have valideret mt title-felt og min select-box. Er der nogle der venligst kan fortælle mig hvad fejlen "expecting ;" går ud på? Den opstår KUN når jeg laver elseif().
Desuden forstår jeg simpelthen ikke hvorfor jeg ikke kan få fat i værdien af selectedIndex og sammenligne i if

<script language=\"JavaScript\" type=\"text/javascript\">
               
                function verifyFields(f){
              var title = f.elements['title'].value;
        var theme = f.elements['theme'];
                        var theme = theme.options[theme.selectedIndex].value;
       
        if(title == ''){
            alert('Choose Title!');
        return false;
        } elseif (theme == '--Choose Theme--'){
        alert('Choose Theme!');
        return false;
        } else {
        return true;
        }
      }
<script>

<form action="/speciale/admin.php" method="post" onSubmit="return validate(this);">
                                            Registered by: <br><br>
                                            Title:<br>
                                                <input type="text" name="title" size="50"><br>
                                            Author(s):<br>
                                                <input type="text" name="author" size="50">* When title is URL type only URL. Syntax http://<br>
                                            Theme:<br>
                                                <select name="theme">
              <option selected>--Choose Theme--</option>
                                                <option selected>Discourse</option>
                                                <option>Organisation</option>
                                                <option>Research</option>
                                                <option>Methodology</option>
                                                <option>Generel Theory</option>
              <option>Children</option>
              <option>Miscellaneus</option>
                                                </select><br>
                                                Pending:<br>
                                                <input type="checkbox" name="pending" value="y"><br>
                                                <input type="hidden" name="regby" value="">
                                                <input type="submit" name="event" value="Submit Title">
                                                </form>
Avatar billede di8leva Nybegynder
31. januar 2003 - 11:51 #1
first... der skall ikke stå 'elseif'.

byd till 'else if'
Avatar billede di8leva Nybegynder
31. januar 2003 - 11:54 #2
second

du har to <script> men ikke nogen </script>
Avatar billede di8leva Nybegynder
31. januar 2003 - 11:56 #3
du kan prøv med
--------------------------------------------
<html>
<script language="JavaScript">

function validate(){

if(my_form.title.value == ''){
alert('Choose Title!');
return false;
} else if (my_form.theme.value == '--Choose Theme--'){
alert('Choose Theme!');
return false;
} else {
return true;
}
}
</script>

<form action="/speciale/admin.php" name="my_form" method="post" onSubmit="return validate();">
Registered by: <br><br>
Title:<br>
<input type="text" name="title" size="50"><br>
Author(s):<br>
<input type="text" name="author" size="50">* When title is URL type only URL. Syntax " target=_blankhttp://<br> <http://<br>
Theme:<br>
<select name="theme">
<option value="--Choose Theme--" selected>--Choose Theme--</option>
<option selected>Discourse</option>
<option>Organisation</option>
<option>Research</option>
<option>Methodology</option>
<option>Generel Theory</option>
<option>Children</option>
<option>Miscellaneus</option>
</select><br>
Pending:<br>
<input type="checkbox" name="pending" value="y"><br>
<input type="hidden" name="regby" value="">
<input type="submit" name="event" value="Submit Title">
</form>
---------------------------------------------

det virker godt...
Avatar billede rzj Nybegynder
31. januar 2003 - 13:04 #4
selcfølgeligt ! Det var denne det var galt med:
Theme:<br>
<select name="theme">
<option value="--Choose Theme--" selected>--Choose Theme--</option>
...
Jeg havde ikke sat en value attribut ind
Takker
Avatar billede websmith Nybegynder
31. januar 2003 - 13:09 #5
Tror du ikke at det er fordi du skal bruge theme.options.selectedIndex istedet for theme.selectedIndex
Avatar billede olebole Juniormester
01. februar 2003 - 14:41 #6
<ole>

websmith >> Det hedder theme.selectedIndex ... det andet er noget sludder  :)

/mvh
</bole>
Avatar billede websmith Nybegynder
04. februar 2003 - 10:25 #7
olebole:

You can determine which option in a selection list is currently selected by using either the selectedIndex property of the options array or of the Select object itself. That is, the following expressions return the same value:

select.selectedIndex
select.options.selectedIndex


Frisk fra JavaScript dokumentationen, så lad være med at "kloge" den på min bekostning tak.
Avatar billede olebole Juniormester
04. februar 2003 - 11:23 #8
Bare fordi man føler sin stolthed gået for nær, er det ikke ensbetydende med, andre har spillet "kloge" på éns bekostning  ;o)

Når du skriver "Frisk fra JavaScript dokumentationen [...]", går jeg udfra, du mener NetScape's(?)
Nu ligger det sådan, at det ikke er NS, der bestemmer, hvordan den HTML-elementer adresseres og hvilke attributter, de har. Det gør W3C i deres DOM-specifikation - og ECMA lægger retningslinerne for selv sprogets struktur.
Derefter er det op til NetScape og MS, hvordan de implementerer deres version af ECMA-script i henholdsvis JavaScript og JScript.

I følge W3C's DOM Level2 rekommendation (3. jan. 2003) har option-elementet ikke nogen selectedIndex-attribut ... det her select-elementet. Det var såmænd også gældende i DOM Level1
/mvh
Avatar billede websmith Nybegynder
04. februar 2003 - 14:14 #9
Det er helt korrekt, men JavaScript er jo som bekendt opfundet af Netscape og i deres implementering, hvis man da kan kalde det, da de jo var først, der kan man bruge options.selectedIndex, så er mit svar jo ganske korrekt.

Så det er ikke noget sludder, for at bruge dit udtryk, og der er jo ingen grund til at skrive det, men du kunne jo for eksempel have skrevet at "Ja det kan man også gøre, men det ville nok være mere korrekt at bruge select.selectedIndex, da det følger DOM specifikationen".

Når du gør det andet, så er du bare med til at skabe en dårlig stemning, og det er vel ikke din mening.

mvh
Avatar billede olebole Juniormester
04. februar 2003 - 14:51 #10
Du har tydeligvis ikke forstået forskellene mellem script-sprog og DOM. Spørgsmålet om man bruger 'SELECT.selectedIndex' eller 'SELECT.options.selectedIndex' handler ikke om script-sprog, men om DOM. Det er DOM'en, der er afgørende for, hvordan man tilgår HTML-elementer - ikke script-sproget. Så er det i denne forbindelse ligegyldigt, hvem der kom først med sproget.
DOM'en er gældende, selvom NetScape har indbygget et alias for 'SELECT.selectedIndex', så tingene også virker, hvis man skriver forkert ... det kender man også fra andre sprog - f.eks. PHP. Derfor er det stadig det korrekte at skrive 'SELECT.selectedIndex'.

Hvad angår ordvalget, må jeg henlede din opmærksomhed på det lille tegn, der efterfølger ordet 'sludder'. Det kaldes en 'smiley' og bruges til at signallere et opblødende smil.

Min mening er at besvare spørgsmål og rette op på evt. misforståelser og fejl i andres besvarelser. Jeg ser det hverken som min opgave at sprede dårlig stemning eller give krisepsykologhjælp til hyper-sensitive brugere.
At jeg skulle skabe dårlig stemning med den pågældende kommentar anser jeg for rent [SLETTET AF CENSUREN]  ;o)
/mvh
Avatar billede websmith Nybegynder
04. februar 2003 - 16:13 #11
Jeg kan godt skelne imellem DOM og JavaScript, men fakta er at man kunne referere til selectedIndex på den måde som jeg skriver før DOM blev opfundet, og Netscape valgte at følge ECMA script standarden.

Det har man fra version 1.0 af JavaScript. ECMAscript er en afart af JavaScript, dvs. ECMAscript er bygget på JavaScript.

Men det kan være lige meget, Jeg gider ikke at diskutere om dete er korrekt eller ej.

Fakta er at der i JavaScript dokumentationen står at man kan gøre som jeg skrev, og da dette er en JavaScript kategori, og ikke en kategori om ECMAscript, så er det fuldt ud korrekt at svare som jeg har gjort.

At du ydermere synes at du er i din ret til at gøre grin med andre brugere fordi deres svar er anderledes end dit, omend korrekt, ja det er sørgeligt, men nok bare en afledt effekt af at du tilsyneladende ikke har andet at tage dig til end at svare på spørgsmål i dette forum, og derfor føler at du har en speciel position, og specielle rettigheder, da du jo er på top ti.

Citat >>...eller give krisepsykologhjælp til hyper-sensitive brugere... << Citat slut

Smukt at du kun kan hævde dig ved at forsøge at gøre grin med andre, når det rigtige nok ville være at indrømme at min løsning fungerer og er korrekt, men ikke lige er din kop the, og at du ville have fortrukket en anden løsning.

mvæh
Avatar billede olebole Juniormester
04. februar 2003 - 17:23 #12
Uden DOM, ingen browser. Længe før W3C skrev deres første rekommendation til en DOM, var DOM en indarbejdet del af browserne. Mange opdagede bare først, der var noget, der hed DOM, da NS6 kom på markedet, som den første NS-browser, der implementerede W3C's 'nye' DOM og hvor de også implementerede CSS for første gang. Da havde W3C's DOM Level1 allerede eksisteret længe og inden da havde man arbejdet med IE's og NS's proprietære DOMs.

Ja, dit spørgsmål er korrekt i forhold til NS' forkerte måde at anvende W3C's DOM på, idet option-elementet simpelthen ikke _har_ nogen attribut eller property, der hedder 'selectedIndex'. Derfor mener jeg også stadig, det er noget sludder, uagtet jeg godt er klar over, det er NS' sludder, du viderebringer.

Det er ganske rigtigt, at NS udviklede LiveScript, som de lige før lanceringen omdøbte til JavaScript for ride med på den hype, Sun's Java havde opnået, men det er ikke korrekt at ECMA er en afart af JavaScript og at ECMA-script bygger på JavaScript. Det er idag (og det har det været længe) ECMA, der sætter standarden for både JScript og JavaScript - som idag er to forskellige implementeringer af ECMA-script.

Hvis dette ikke var en kategori for ECMA-script ville halvdelen af spørgsmålene i denne kategori være forkert placeret, da de omhandler JScript og ikke JavaScript. Så smålige er vi andre ikke, at vi hænger os i den slags bagateller.

Mens vi taler om bagateller:
At du stadig ikke fatter, det ikke er dit svar, men overdrevne følsomhed (som jeg formoder skyldes såret stolthed), jeg morer mig lidt over og kommenter på, kan jeg ikke rigtig forholde mig til ... jeg finder nærmest, det begynder at antage pinlige dimensioner  :)
/mvh
Avatar billede websmith Nybegynder
04. februar 2003 - 17:38 #13
*suk*

Det handler ikke om "stolthed", men simpelthen at jeg ikke vil finde mig at få at vide at mig svar er noget sludder, når det ikke er sandt.
Avatar billede olebole Juniormester
04. februar 2003 - 17:39 #14
Okay .... så får du at vide, dit svar ikke er sandt, men heller ikke noget sludder. Tilfreds?  :D
Avatar billede websmith Nybegynder
04. februar 2003 - 18:52 #15
:) Det var rent faktisk sjovt, og det fortjente jeg, da jeg skrev noget som kunne misforståes.

For at vende tilbage til emnet, så er options på et select objekt et array af objekter af typen option, og da du tilsyneladende jo ved noget om udvikling, så ved du også at man godt kan extende en klasse som et objekt jo som regel er.

Dvs. Der er jo ikke noget i vejen for at man i JavaScript har valgt at extende Objektet Array som følger:
Når objektet Array indeholder objekter af typen Option
Så bliver Objektet Array udvidet med en property selectedIndex, som returnerer index på første element i array'et hvis property selected er lig med true.

Så ikke alene er det korrekt, det er også en valid løsning.
Når man extender en klasse som er et interface/prototype, så skal man implementere alle protytypens metoder osv, men man må så sandelig godt udvide.

Men nok om det vi kan sagtens være "gode venner" selvom vi ikke er enige, så længe vi kan holde diskussionen på et probert niveau, og undlader at komme med "stærke" udtryk :)

Så det må vel være på sin plads at jeg undskylder for de kommentarer jeg har givet som kunne forstås negativt.

mvh
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel