/ 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
Sætte focus på næste felt i tabulator rækk~
Fra : Peter Lykkegaard


Dato : 15-12-03 17:23

Hejsa - Jeg har en lille udfordring her

Jeg kunne godt tænke mig at flytte focus til næste textfelt efter en submit
Jeg kunne jo bare bruge feltnavnet, men det skulle gerne være lidt generisk


Jeg har gemt aktuelle feltnavn i en hidden field - vha lidt javascript
Såeeh, jeg kan sætte fokus tilbage til sidst rørte felt, men hvordan jeg den
næste?

- Peter



 
 
Martin Hintzmann And~ (17-12-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 17-12-03 08:53

Peter Lykkegaard wrote:

> Hejsa - Jeg har en lille udfordring her
>
> Jeg kunne godt tænke mig at flytte focus til næste textfelt efter en submit
> Jeg kunne jo bare bruge feltnavnet, men det skulle gerne være lidt generisk
>
>
> Jeg har gemt aktuelle feltnavn i en hidden field - vha lidt javascript
> Såeeh, jeg kan sætte fokus tilbage til sidst rørte felt, men hvordan jeg den
> næste?
>

Jeg er lidt i tvivl om hvad du skal bruge det til, men jeg har et løsningsforslag.

Du laver en focus handler på samtlige form-felter, der finder ud af hvilket felt der pt har
focus. (Det kan man ikke ved submit)
Feltets index nummer gemmer du i et hidden field.
Du skal så blot ligge en til index nummeret for at få det næste felt.

Noget ala nedenstående hvor 'index' er index nummeret på sidste rørte felt.

document.forms[0].elements[index+1].focus()

Hintzmann c",)



Peter Lykkegaard (17-12-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 17-12-03 09:00


"Martin Hintzmann Andersen" <no@spam.dk> wrote in message
news:brp20v$1pr$1@sunsite.dk...
> >
> > Jeg kunne godt tænke mig at flytte focus til næste textfelt efter en
submit
> > Jeg kunne jo bare bruge feltnavnet, men det skulle gerne være lidt
generisk
> >
> >
> > Jeg har gemt aktuelle feltnavn i en hidden field - vha lidt javascript
> > Såeeh, jeg kan sætte fokus tilbage til sidst rørte felt, men hvordan jeg
den
> > næste?
> >
>
> Jeg er lidt i tvivl om hvad du skal bruge det til, men jeg har et
løsningsforslag.

Jeg har en masse "submit" knapper og online opslag når kontrollen vender
tilbage til klienten så er der ikke så megen sjov ved at sætte markøren i de
første felt - igen, igen
>
> Du laver en focus handler på samtlige form-felter, der finder ud af
hvilket felt der pt har
> focus. (Det kan man ikke ved submit)

Jep, onblur - feltnavn gemmes i et hidden felt
Fungerer glimrende - bortset fra at det er navnet jeg gemmer
Der skal vist rettes lidt

> Feltets index nummer gemmer du i et hidden field.
> Du skal så blot ligge en til index nummeret for at få det næste felt.

Jow det er jeg også nået frem til
Men jeg skal vel lige checke om jeg har en button eller feltet er readonly
etc
>
> Noget ala nedenstående hvor 'index' er index nummeret på sidste rørte
felt.
>
> document.forms[0].elements[index+1].focus()
>
Jow, så har jeg jo feltet hvor netop kan tjekke de forskellige egenskaber
Jeg fandt ud af at man skal flytte lidt rundt på felterne direkte i koden
efter at de var oprettet via VS IDE (skrammel) for at få den rigtige tab
rækkefølge
Jeg bruger gridlayout og positionering i stedet for tabel styring (til
intranet og klient ligger fast)

Det er sgu længe siden jeg har fedtet med det her

- Peter



Martin Hintzmann And~ (17-12-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 17-12-03 09:26

Peter Lykkegaard wrote:
>
>
> Jep, onblur - feltnavn gemmes i et hidden felt
> Fungerer glimrende - bortset fra at det er navnet jeg gemmer
> Der skal vist rettes lidt
>

Jeg ville umiddelbart vælge onfocus og ikke onblur, men det er jo dig der sidder med koden og
hvis det virker er det jo bare top nice

>
> Jow det er jeg også nået frem til
> Men jeg skal vel lige checke om jeg har en button eller feltet er readonly
> etc

Du kan enten markere de form elementer der må få focus eller dem der ikke må.
Alt efter hvad der falder dig bedst ind.

Markeringen kan du lave direkte på HTML form-elementet med en class. Ex
<input type="text" class="focusable" />
eller
<input type="button" class="notfocusable" />

Når du så skal sætte focus på det næste form element, skal benytte en for-løkke fra
index-nummeret til sidste felt (forms.length)
Inde i loop'et spørger du, alt efter om du har valgt 'focusable' eller 'notfocusable', på om
feltet må have focus.

Jeg har en funktion der kan spørge på om et element har en en bestemt class.

hasClass = function (el, className) {
   var cs, j
   cs = el.className.split(" ");
   for (j = 0; j < cs.length; j++) {
      if (cs[j] == className) {
         return true;
      }
   }
   return false;
}

Den kan du jo bruge.


Alternativt skal du "mappe" de felter der må have focus i noget javascript kode.
ex.
document.forms[0].elements['postnr'].allowfocus = true;


Du kan selvfølgelig også lave et indviklet regelsæt i javascript som kigger på attributter som
readonly, disabled eller om typen er en submit/button/reset.


Jeg syntes at den første løsning med class'erne er den bedste, men det er op til dig.


>
> Jow, så har jeg jo feltet hvor netop kan tjekke de forskellige egenskaber
> Jeg fandt ud af at man skal flytte lidt rundt på felterne direkte i koden
> efter at de var oprettet via VS IDE (skrammel) for at få den rigtige tab
> rækkefølge

Det kender jeg ikke, med det lyder huggeligt

> Jeg bruger gridlayout og positionering i stedet for tabel styring (til
> intranet og klient ligger fast)
>

Gridlayout er det ikke lidt for fastfrosset, jeg ville nok vælge et flydende layout. Men igen
det er jo op til dig


> Det er sgu længe siden jeg har fedtet med det her
>

Op på cyklen igen

Hintzmann c",)


Peter Lykkegaard (17-12-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 17-12-03 09:49


"Martin Hintzmann Andersen" <no@spam.dk> wrote in message
news:brp3v9$a4b$1@sunsite.dk...

> Du kan selvfølgelig også lave et indviklet regelsæt i javascript som
kigger på attributter som
> readonly, disabled eller om typen er en submit/button/reset.
>
> Jeg syntes at den første løsning med class'erne er den bedste, men det er
op til dig.
>
Hehe, jeg bruger class i forbindelse med CSS
Der var ingen der sagde det skulle være nemt

> > Jeg bruger gridlayout og positionering i stedet for tabel styring (til
> > intranet og klient ligger fast)
> >
> Gridlayout er det ikke lidt for fastfrosset, jeg ville nok vælge et
flydende layout. Men igen
> det er jo op til dig
>
Jow det har du ret i, men der sgu så mange felter at man ikke kan skalere
det alligevel

Thanks - Peter



Martin Hintzmann And~ (17-12-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 17-12-03 10:02

Peter Lykkegaard wrote:

> "Martin Hintzmann Andersen" <no@spam.dk> wrote in message
> news:brp3v9$a4b$1@sunsite.dk...
>
>
>>Du kan selvfølgelig også lave et indviklet regelsæt i javascript som
>
> kigger på attributter som
>
>>readonly, disabled eller om typen er en submit/button/reset.
>>
>>Jeg syntes at den første løsning med class'erne er den bedste, men det er
>
> op til dig.
>
> Hehe, jeg bruger class i forbindelse med CSS
> Der var ingen der sagde det skulle være nemt
>

Du kan sagtens have to eller flere class'er på samme element.
<input type="text" class="strong focusable error" name="TESTFELT" />

Funktionen jeg gav dig splitter ved hvert mellemrum og looper dem igennem og spørger på om
class'en passer.

alert( hasClass( document.forms[0].elements['TESTFELT'], "focusable" ) );

Ovenstående alert'er true, da form-elementet 'TESTFELT' har class'en 'focusable' .

Hintzmann c",)


Peter Lykkegaard (17-12-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 17-12-03 10:05


"Martin Hintzmann Andersen" <no@spam.dk> wrote in message
news:brp62u$4ln$1@sunsite.dk...
> > Hehe, jeg bruger class i forbindelse med CSS
> > Der var ingen der sagde det skulle være nemt
> >
> Du kan sagtens have to eller flere class'er på samme element.

Ohh, that's new (to me)
Det skal da prøves af

Jeg bukker og takker

- Peter



Martin Hintzmann And~ (17-12-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 17-12-03 10:13

Peter Lykkegaard wrote:

> "Martin Hintzmann Andersen" <no@spam.dk> wrote in message
> news:brp62u$4ln$1@sunsite.dk...
>
>>>Hehe, jeg bruger class i forbindelse med CSS
>>>Der var ingen der sagde det skulle være nemt
>>>
>>
>>Du kan sagtens have to eller flere class'er på samme element.
>
>
> Ohh, that's new (to me)
> Det skal da prøves af
>
> Jeg bukker og takker
>

Jeg har forresten også nogle flere funktioner til at manipulere med class-attributten. Jeg
tænkte at det kunne være du fik brug for dem før eller siden.

Funktionen removeClass fjerner en class fra et element.

removeClass = function (el, className) {
var cs, j, remainClass
remainClass = new Array();
cs = el.className.split(" ");
for (j = 0; j < cs.length; j++) {
if (cs[j] != className) {
remainClass.push(cs[j]);
    }
}
el.className = remainClass.join(" ");
}

Funktionen 'addClass' tilføjer en class på et element.

addClass = function (el, className) {
   if (el.className==null)
      el.className='';
   el.className+=(el.className.length>0?' ':'')+className;
}

Man kan jo lige så godt dele sin viden

Hintzmann c",)

Chrisser (17-12-2003)
Kommentar
Fra : Chrisser


Dato : 17-12-03 10:19

Martin Hintzmann Andersen wrote:
> Funktionen removeClass fjerner en class fra et element.
>
> removeClass = function (el, className) {

Nu er jeg altså nødt til at spørge

Er ovenstående bare en anden måde at definere en funktion på end den jeg
altid ser/bruger ?
Altså: function removeClass(el,className){

Chrisser



Martin Hintzmann And~ (17-12-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 17-12-03 10:31

Chrisser wrote:
>
> Nu er jeg altså nødt til at spørge
>
> Er ovenstående bare en anden måde at definere en funktion på end den jeg
> altid ser/bruger ?
> Altså: function removeClass(el,className){
>

Ja, det er det samme.

Jeg klippede koden fra et af mine scripts (mhaList).
http://users.cybercity.dk/~dsl58854/articles/mhaList/mhalist.js

Og der havde jeg skrevet det på denne måde.
removeClass = function(el,className)

Rent faktisk med en namespace foran, da det giver bedere portability.
ml.removeClass = function(el,className)

Du kan læse mere om namespaces i javascript og portability hos det 13th Parallel
http://www.13thparallel.org/?issue=2002.03&title=portability_one

Hintzmann c",)



Chrisser (17-12-2003)
Kommentar
Fra : Chrisser


Dato : 17-12-03 10:55

Martin Hintzmann Andersen wrote:
> Jeg klippede koden fra et af mine scripts (mhaList).
> http://users.cybercity.dk/~dsl58854/articles/mhaList/mhalist.js
>
> Og der havde jeg skrevet det på denne måde.
> removeClass = function(el,className)
>
> Rent faktisk med en namespace foran, da det giver bedere
> portability. ml.removeClass = function(el,className)
>
> Du kan læse mere om namespaces i javascript og portability hos det
> 13th Parallel
> http://www.13thparallel.org/?issue=2002.03&title=portability_one

Uh, jeg vidste slet ikke at JavaScript havde disse muligheder - den artikel
skal nærlæses på et senere tidspunkt

Chrisser



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