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