|
| 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
| |
|
|