/ 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
omdefinere enter tast til tab i en form
Fra : VagnT


Dato : 10-08-04 15:46

Hej alle,

Jeg vil gerne have hjælp til at omdefinere Enter tasten så den
virker som Tab tasten i en form.

Formålet er, at de der er vant til at indtaste i et regneark,
gerne vil kunne hoppe til næste felt med enter i stedet for med
tab.

mvh.

VagnT

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

 
 
Martin C. Petersen (10-08-2004)
Kommentar
Fra : Martin C. Petersen


Dato : 10-08-04 17:12

> Jeg vil gerne have hjælp til at omdefinere Enter tasten så den
> virker som Tab tasten i en form.
Her er mit bud:
<form id="myForm">
<input tabindex="1" />
<input tabindex="2" />
<input tabindex="3" />
<input tabindex="4" />
<input tabindex="5" />
<input tabindex="6" />
</form>
<script type="text/javascript">
function handleKeyPress ()
{
var e = window.event ? window.event : arguments[0];
var src = e.srcElement ? e.srcElement : e.target;
if (e.keyCode==13)
{
var myForm = document.getElementById('myForm');
if ( typeof(myForm)!="undefined" && typeof(src)!="undefined" )
{
var tabindex = parseInt(src.tabIndex);
var foundTabindex = 0;
var foundElement = null;
var formElements = typeof(myForm.all)!="undefined" ? myForm.all :
myForm.elements;
for (var x in formElements)
{
if (typeof(formElements[x].tabIndex)!="undefined")
{
var currentTabindex = parseInt(formElements[x].tabIndex);
if (currentTabindex>tabindex && (foundTabindex==0 || currentTabindex <
foundTabindex) )
{
foundTabindex = currentTabindex;
foundElement = formElements[x];
}
}
}
if (foundElement!=null)
{
foundElement.select();
foundElement.focus();
}
}
return false;
}
}

var x = document.getElementById('myForm');
if (typeof(x)!="undefined") x.onkeypress=handleKeyPress;
</script>


Martin



VagnT (10-08-2004)
Kommentar
Fra : VagnT


Dato : 10-08-04 17:27


"Martin C. Petersen" <mcp@phys.au.dk> skrev i en meddelelse
news:4118f3df$0$174$edfadb0f@dtext01.news.tele.dk...
> > Jeg vil gerne have hjælp til at omdefinere Enter tasten så den
> > virker som Tab tasten i en form.
> Her er mit bud:
..
.. meget kode
..
..> Martin

Hej Martin,

Det var en voldsom fætter.

Jeg har hidtil forsøgt med denne funktion:

function checkKey()
{
if (window.event.keyCode == 13)
{
window.event.keyCode = 11;
}
}

Kaldt fra min form sådan:
<form name="budget" method="post" action="" onkeypress="checkKey();">

Jeg kan få denne funktion til at erstatte retur tasten med alle de normale
taster a-å, 0-9 osv.

Hvorfor virker det så ikke med kontroltegnene for tab ?

I det mindste har jeg med ovenstående forhindret at formen sendes i utide.
Afprøver dit forslag senere.

mvh.

Vagn



Martin C. Petersen (10-08-2004)
Kommentar
Fra : Martin C. Petersen


Dato : 10-08-04 18:11

VagnT wrote:
> Det var en voldsom fætter.
Ja, jeg kan evt. kommentere den, hvis der er brug for det.

> Jeg har hidtil forsøgt med denne funktion:
>
> function checkKey()
> {
> if (window.event.keyCode == 13)
> {
> window.event.keyCode = 11;
> }
> }
>
> Kaldt fra min form sådan:
> <form name="budget" method="post" action="" onkeypress="checkKey();">
Virker det også i mozilla?

> Hvorfor virker det så ikke med kontroltegnene for tab ?
Jeg tror desværre ikke, at det kan gøres så simpelt.

Her er en opdateret udgave af funktionen:
function handleKeyPress ()
{
var wrap = false;
var e = typeof(window.event)!="undefined" ? window.event : arguments[0];
var src = typeof(e.srcElement)!="undefined" ? e.srcElement : e.target;
if (e.keyCode==13)
{
var myForm = document.getElementById('myForm');
if ( typeof(myForm)!="undefined" && typeof(src)!="undefined" )
{
var tabindex = parseInt(src.tabIndex);

var foundTabindex = 0;
var foundElement = null;
var firstTabindex = 0;
var firstElement = null;

var formElements = myForm.elements;
for (var x in formElements)
{
if (formElements[x]!=null
&& typeof(formElements[x].tabIndex)!="undefined"
&& typeof(formElements[x].focus)!="undefined"
&& typeof(formElements[x].select)!="undefined")
{
var currentTabindex = parseInt(formElements[x].tabIndex);
if (currentTabindex>tabindex && (foundTabindex==0 || currentTabindex <
foundTabindex) )
{
foundTabindex = currentTabindex;
foundElement = formElements[x];
}

if (firstTabindex==0 || currentTabindex<firstTabindex)
{
firstTabindex = currentTabindex;
firstElement = formElements[x];
}
}
}
if (foundElement!=null)
{
foundElement.select();
foundElement.focus();
} else if (firstElement!=null&&wrap)
{
firstElement.select();
firstElement.focus();
}
}
return false;
}
}
Brugen af document.all er fjernet - det var ikke nødvendigt alligevel.
Desuden er der mulighed for at "wrappe" (efter sidste felt kommer man til
det første) ved at sætte wrap = true.


Martin



VagnT (10-08-2004)
Kommentar
Fra : VagnT


Dato : 10-08-04 21:41


"Martin C. Petersen" <mcp@phys.au.dk> skrev i en meddelelse
news:4119019d$0$166$edfadb0f@dtext01.news.tele.dk...
> Virker det også i mozilla?
>
> Martin

Hej Martin,

Mozilla og alle andre browsere end IE er ikke relevante. Det er til en
intranet løsning hvor alt andet end IE er forbudt ved lov. Brugerne har IE
6.0 og de kan ikke installere andet, derfor tester jeg ikke på andre
browsere.

Beklager hvis det kan påvirke løsningen i en simplere retning at jeg ikke
sagde det fra start.

mvh.

VagnT



Martin C. Petersen (10-08-2004)
Kommentar
Fra : Martin C. Petersen


Dato : 10-08-04 22:02

Hej Vagn.
> Mozilla og alle andre browsere end IE er ikke relevante. Det er til en
> intranet løsning hvor alt andet end IE er forbudt ved lov. Brugerne
> har IE
> 6.0 og de kan ikke installere andet, derfor tester jeg ikke på andre
> browsere.
>
> Beklager hvis det kan påvirke løsningen i en simplere retning at jeg
> ikke sagde det fra start.
Det er ikke fordi forskellen er så stor, jeg forsøger bare generelt at
skrive kode, der virker i IE og Mozilla som minimum. Det er nødvendigt med
den megen kode, da alle formens elementer skal ledes igennem for at finde
det næste mht. tabindex. Såfremt man ikke bruger tabindex (og
tab-rækkefølgen altså er den samme som rækkefølgen af elementerne i
kildekoden), kan det gøres noget simplere.


Martin



Martin C. Petersen (10-08-2004)
Kommentar
Fra : Martin C. Petersen


Dato : 10-08-04 22:08

Martin C. Petersen wrote:
>> Mozilla og alle andre browsere end IE er ikke relevante. Det er til
>> en intranet løsning hvor alt andet end IE er forbudt ved lov.
>> Brugerne har IE
>> 6.0 og de kan ikke installere andet, derfor tester jeg ikke på andre
>> browsere.
>>
>> Beklager hvis det kan påvirke løsningen i en simplere retning at jeg
>> ikke sagde det fra start.
> Det er ikke fordi forskellen er så stor, jeg forsøger bare generelt at
> skrive kode, der virker i IE og Mozilla som minimum. Det er
> nødvendigt med den megen kode, da alle formens elementer skal ledes
> igennem for at finde det næste mht. tabindex. Såfremt man ikke bruger
> tabindex (og tab-rækkefølgen altså er den samme som rækkefølgen af
> elementerne i kildekoden), kan det gøres noget simplere.
Hmm, der var jeg vist lidt for hurtig. Det bliver ikke specielt simplere af
den grund!


Martin



VagnT (11-08-2004)
Kommentar
Fra : VagnT


Dato : 11-08-04 06:25


"Martin C. Petersen" <mcp@phys.au.dk> skrev i en meddelelse
news:41193924$0$164$edfadb0f@dtext01.news.tele.dk...
> Martin C. Petersen wrote:
> Hmm, der var jeg vist lidt for hurtig. Det bliver ikke specielt simplere
af
> den grund!
>
>
> Martin
>
>
Hej Martin,

Tak for hjælpen.

Her er den simplest mulige løsning der virker i IE.

<form name="budget" method="post" action="" onKeyDown="if(event.keyCode==13)
event.keyCode=9;">

Det virker som ønsket.

mvh.

VagnT



Claus Madsen (10-08-2004)
Kommentar
Fra : Claus Madsen


Dato : 10-08-04 22:30

VagnT wrote:
> "Martin C. Petersen" <mcp@phys.au.dk> skrev i en meddelelse
> news:4119019d$0$166$edfadb0f@dtext01.news.tele.dk...
>> Virker det også i mozilla?
>>
>> Martin
>
> Hej Martin,
>
> Mozilla og alle andre browsere end IE er ikke relevante. Det er til en
> intranet løsning hvor alt andet end IE er forbudt ved lov. Brugerne
> har IE
> 6.0 og de kan ikke installere andet, derfor tester jeg ikke på andre
> browsere.
>

Her en enkel løsning, der virker i IE:

http://javascript.internet.com/forms/enter-key-focus.html

--
Claus Madsen - http://clausmadsen.dk



VagnT (11-08-2004)
Kommentar
Fra : VagnT


Dato : 11-08-04 06:23


"Claus Madsen" <post@clausmadsen.dk> skrev i en meddelelse
news:q7bSc.30278$Vf.1897549@news000.worldonline.dk...
> Her en enkel løsning, der virker i IE:
>
> http://javascript.internet.com/forms/enter-key-focus.html
>
> --
> Claus Madsen - http://clausmadsen.dk
>
>
Hej Claus,

Tak - den virker.

Da jeg er lidt doven har jeg nu følgende form definition:

<form name="budget" method="post" action="" onKeyDown="if(event.keyCode==13)
event.keyCode=9;">

Og det virker som ønsket.

mvh.

VagnT



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste