/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Javascript Select option problem?
Fra : Christian Kragh


Dato : 17-12-09 10:48

Hej.

Jeg kan ikke rigtig finde ud af at vælge standart værdien i en select form.

Jeg er igang med at lave en hjemmeside til min timeseddel og har i den
forbindelse brug for at man kan fortryde sine indtastninger.

I kan se den på http://www3.ckweb.dk/tmdemo

Når man vil redigere en dato vælger man det lille ikon ud for den aktuelle
dato.
Lige nu har jeg sat at værdierne til at være standard klokken 13:13 på alle
felter.
Hvis man ændre på blot en af felterne så får man en advarsel når man vil
annullere den enkelte dato.
Det virker også som det skal, men hvis man nu har valgt et andet tidspunkt
istedet for den standard valgte så skal den jo gerne gå tilbage til den
værdi næste gang man vil redigere samme dato.

Derfor vil jeg gerne have en javascript funktion til at vælge standard
værdien i de select options jeg har under den enkelte dag.

For hver dag hedder de, hvor X er datoen, fx. 22.
tidXstarttimer
tidXstartminutter
tidXslutminutter
tidXsluttimer
tidXtid1timer
tidXtid1minutter
tidXtid2timer
tidXtid2minutter
tidXtid3timer
tidXtid3minutter

Er der en simpel måde eller skal jeg lave det på?

Venlig hilsen
Christian


 
 
Birger Sørensen (17-12-2009)
Kommentar
Fra : Birger Sørensen


Dato : 17-12-09 11:12

Christian Kragh frembragte:
> Hej.
>
> Jeg kan ikke rigtig finde ud af at vælge standart værdien i en select form.

standart = flag eller en stander..
select form = en form der indeholder en select?


8X
> Når man vil redigere en dato vælger man det lille ikon ud for den aktuelle
> dato.
8X
> Er der en simpel måde eller skal jeg lave det på?

document.getElementById( 'selectID').selectedIndex = 13;
selectID skal være id for den select du vil sætte selected for.
13 skal være nummeret på den option du vil vælge, hvor den første er
nummer 0.
Det kan selvfølgelig gøres i en funktion, hvor elementet eller
elementets id er en parameter, hvilket nok vil være smart, i
betragtning af, at du må have en hel del at vælge imellem. Men det
kræver lidt mere indsigt i hvordan du gør det...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Christian Kragh (18-12-2009)
Kommentar
Fra : Christian Kragh


Dato : 18-12-09 13:50

>> Hej.
>>
>> Jeg kan ikke rigtig finde ud af at vælge standart værdien i en select
>> form.
>
> standart = flag eller en stander..
> select form = en form der indeholder en select?
>
>
> 8X
>> Når man vil redigere en dato vælger man det lille ikon ud for den
>> aktuelle dato.
> 8X
>> Er der en simpel måde eller skal jeg lave det på?
>
> document.getElementById( 'selectID').selectedIndex = 13;
> selectID skal være id for den select du vil sætte selected for.
> 13 skal være nummeret på den option du vil vælge, hvor den første er
> nummer 0.

Jeg havde håbet på at jeg ikke skulle skrive hvilket index den skulle vælge,
men at der var en metode til at vælge den forudvalgte...
-- document.getElementById( 'selectID').selectedIndex=defaultselected;
eller sådan noget.

Christian


Birger Sørensen (18-12-2009)
Kommentar
Fra : Birger Sørensen


Dato : 18-12-09 17:57

Christian Kragh:
>>> Hej.
>>>
>>> Jeg kan ikke rigtig finde ud af at vælge standart værdien i en select
>>> form.
>>
>> standart = flag eller en stander..
>> select form = en form der indeholder en select?
>>
>>
>> 8X
>>> Når man vil redigere en dato vælger man det lille ikon ud for den aktuelle
>>> dato.
>> 8X
>>> Er der en simpel måde eller skal jeg lave det på?
>>
>> document.getElementById( 'selectID').selectedIndex = 13;
>> selectID skal være id for den select du vil sætte selected for.
>> 13 skal være nummeret på den option du vil vælge, hvor den første er nummer
>> 0.
>
> Jeg havde håbet på at jeg ikke skulle skrive hvilket index den skulle vælge,
> men at der var en metode til at vælge den forudvalgte...
> -- document.getElementById( 'selectID').selectedIndex=defaultselected;
> eller sådan noget.
>
> Christian

Der er ingen tvivl om at både input, textarea og select kender den
værdi de havde før der blev lavet ændringer, eller valgt anderledes end
default.
Et reset() på en form der indeholder disse elementer, vil returnere
værdier til de oprindelige.
Det fremgår ikke af hverken W3C eller DOM specifikationer, hvordan man
tilgår disse værdier.
Og der er vel også ret stor sandsynlighed for, at det ikke vil være ens
i forskellige browsere.
Jeg har vist læst om hvordan en gang, men kan ikke huske hvor. (Måske
et google opslag kunne hjælpe dig? Har ikke tid lige nu..)

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Jens Peter Karlsen (19-12-2009)
Kommentar
Fra : Jens Peter Karlsen


Dato : 19-12-09 01:31

Det er nu browseren der husker det og ikke de enkelte elementer.
Den eneste mulighed for at finde ud af hvad default værdien var (hvis
der var en) er at parse selve html'en.

Regards Jens Peter Karlsen.

On Fri, 18 Dec 2009 17:56:48 +0100, Birger Sørensen
<sdc@bbsorensen.com> wrote:

>Der er ingen tvivl om at både input, textarea og select kender den
>værdi de havde før der blev lavet ændringer, eller valgt anderledes end
>default.
>Et reset() på en form der indeholder disse elementer, vil returnere
>værdier til de oprindelige.

Jens Peter Karlsen (19-12-2009)
Kommentar
Fra : Jens Peter Karlsen


Dato : 19-12-09 01:45

Hvis du fortryder vil standard værdierne automatisk være der igen når
du trykker på reset knappen. Så bare sæt en reset knap på.
Eller er der noget jeg har misforstået i dit spørgsmål?

Regards Jens Peter Karlsen.

On Thu, 17 Dec 2009 10:48:00 +0100, "Christian Kragh"
<tursoe@gmail.com> wrote:

>Jeg kan ikke rigtig finde ud af at vælge standart værdien i en select form.
>
>Jeg er igang med at lave en hjemmeside til min timeseddel og har i den
>forbindelse brug for at man kan fortryde sine indtastninger.

Christian Kragh (19-12-2009)
Kommentar
Fra : Christian Kragh


Dato : 19-12-09 13:51

> Hvis du fortryder vil standard værdierne automatisk være der igen når
> du trykker på reset knappen. Så bare sæt en reset knap på.
> Eller er der noget jeg har misforstået i dit spørgsmål?

Lige præcis, men jeg har bare det problem at jeg har lavet 31 dage man kan
redigere hver for sig, men det er i samme form, så hvis man fortryder skal det
kun ændre værdierne for den ene dag...

Men en reset er selvfølgelig en mulighed så jeg må overveje at lave en form for
hver dag...

Ellers må jeg lave en funktion for hver dag der så sætter alle felterne på den
aktuelle dag...

Jeg må lige overveje hvad jeg gør...

Tak for gode svar, det har åbnet mine øjne for muligheder.

Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (19-12-2009)
Kommentar
Fra : Birger Sørensen


Dato : 19-12-09 14:03

Christian Kragh formulerede lørdag:
>> Hvis du fortryder vil standard værdierne automatisk være der igen når
>> du trykker på reset knappen. Så bare sæt en reset knap på.
>> Eller er der noget jeg har misforstået i dit spørgsmål?
>
> Lige præcis, men jeg har bare det problem at jeg har lavet 31 dage man kan
> redigere hver for sig, men det er i samme form, så hvis man fortryder skal
> det kun ændre værdierne for den ene dag...
>
> Men en reset er selvfølgelig en mulighed så jeg må overveje at lave en form
> for hver dag...
>
> Ellers må jeg lave en funktion for hver dag der så sætter alle felterne på
> den aktuelle dag...
>
> Jeg må lige overveje hvad jeg gør...
>
> Tak for gode svar, det har åbnet mine øjne for muligheder.
>
> Christian

Umiddelbart er løsningen en form for hver dag.
Men det kan også gøres med AJAX, hvis man har mod på det.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Stig Johansen (19-12-2009)
Kommentar
Fra : Stig Johansen


Dato : 19-12-09 18:17

Birger Sørensen wrote:

> Umiddelbart er løsningen en form for hver dag.
> Men det kan også gøres med AJAX, hvis man har mod på det.

Man kan også bare gemme værdierne i et array eller en 'history list', så man
ved fortryd/'undo' kører tilbage til den forrige værdi.
Ud fra eksemplet er det dog svært (for mig), at se arbejdsgangen på siden.

Jeg ser kun et par select bokse med år/måned, og en tabel uden indhold.

--
Med venlig hilsen
Stig Johansen

Gunnar Vestergaard (20-12-2009)
Kommentar
Fra : Gunnar Vestergaard


Dato : 20-12-09 21:00

Christian Kragh skrev:
> (...)
> Jeg kan ikke rigtig finde ud af at vælge standart værdien i en select form.
>
> Jeg er igang med at lave en hjemmeside til min timeseddel og har i den
> forbindelse brug for at man kan fortryde sine indtastninger.
> (...)
> Det virker også som det skal, men hvis man nu har valgt et andet
> tidspunkt istedet for den standard valgte så skal den jo gerne gå
> tilbage til den værdi næste gang man vil redigere samme dato.
>
> Derfor vil jeg gerne have en javascript funktion til at vælge standard
> værdien i de select options jeg har under den enkelte dag.
> (...)
> Er der en simpel måde eller skal jeg lave det på?
> (...)

Der er flere løsninger alt efter hvad behovet er.

Men først må et spørgsmål afklares:
Kan der blive tale om, at timetallene ikke bliver hele timer men hele
kvarter i stedet?

I det følgende går jeg ud fra, at du har det fint med teknikken i
JavaScript og Document Object Model:

Ændr BODY elementet på siden, så det hedder:
<body onload="RememberTimes()">

I et SCRIPT element indsættes følgende:
function RememberTimes() {
var Sel, Tab, ElList, x1;
Tab=document.getElementById("monthframe");
ElList=Tab.getElementsByTagName("select");
for(x1=0; x1<ElList.length; x1++) {
Sel=ElList[x1];
Sel.PreviouslyChosen=Sel.selectedIndex;
}
}

Ovenstående funktion køres, når siden netop er læst ind. Den opretter og
indlæser en variabel på hvert SELECT element. Variablen indeholder index
for det OPTION element, der er valgt som standard. Senere kan du så
hente værdien fra denne variabel og kopiere den til Sel.selectedIndex
for at gendanne standardværdierne. Var det det, som du ønskede?

Bemærk at jeg ikke har efterprøvet ovenstående, så der er muligvis,
eller muligvis ikke, behov for at rette fejl.

I øvrigt et tip:
Angiveligt anvender du XHTML 1.0 Strict. Der er det ikke tilladt at skrive
<option selected>00</option>

Det skal være
<option selected="selected">00</option>
ifølge standarden (XHTML).

Gunnar

Christian Kragh (21-12-2009)
Kommentar
Fra : Christian Kragh


Dato : 21-12-09 14:04

> Der er flere løsninger alt efter hvad behovet er.
>
> Men først må et spørgsmål afklares:
> Kan der blive tale om, at timetallene ikke bliver hele timer men hele
> kvarter i stedet?

Når man skal lave noget, for eksempel klokken 06:22, har man 15 minutter til
at logge ind, forberede sig og hvad man ellers skal.
Derudover har man så 4 minutters gang ifølge arbejdsseddlerne så man skal
møde 19 minutter før man skal lave det første...
Derfor kan man godt møde klokken 06:02 så jeg skal have både timer og
minutter med...

> I det følgende går jeg ud fra, at du har det fint med teknikken i
> JavaScript og Document Object Model:
>
> Ændr BODY elementet på siden, så det hedder:
> <body onload="RememberTimes()">

Det er en mulighed, men jeg lavede den nemme med serversite...
Jeg har lavet en funktion der skriver værdierne i en funktion med forsk.
navne... Her er for dag 1:

<script type="text/javascript">
function SetStandardDate1 () {
document.getElementById("tid1starttimer").selectedIndex=10;
document.getElementById("tid1startminutter").selectedIndex=6;
document.getElementById("tid1slutminutter").selectedIndex=15;
document.getElementById("tid1sluttimer").selectedIndex=12;
document.getElementById("tid1tid1timer").selectedIndex=0;
document.getElementById("tid1tid1minutter").selectedIndex=0;
document.getElementById("tid1tid2timer").selectedIndex=0;
document.getElementById("tid1tid2minutter").selectedIndex=0;
document.getElementById("tid1tid3timer").selectedIndex=0;
document.getElementById("tid1tid3minutter").selectedIndex=0;
};
</script>

>
> I øvrigt et tip:
> Angiveligt anvender du XHTML 1.0 Strict. Der er det ikke tilladt at skrive
> <option selected>00</option>

Ja, den er fanget i validatoren på min localhost...

Mange tak for gode råd...

Christian


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste