WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Flytta focus mellan formulärrutor med enter (https://www.wn.se/forum/showthread.php?t=19862)

etanders 2007-03-09 11:03

På en sida med ett stort antal formulärrutor att fylla i (<input type="text" ...>) skulle det vara praktiskt att kunna använda enter för att flytta till nästa ruta istället för tab. I detta fall är det enbart siffror som ska fyllas i, och tabknappen sitter ju rätt långt bort från den numeriska delen på tangentbordet. Att kunna använda enter skulle snabba upp inmatningen rejält och den skulle kunna utföras med en hand.

Jag googlade lite och hittade dels ett förslag som jag inte fick att funka alls:

Kod:

<body onKeyDown="if (event.keyCode==13) {event.keyCode=9; return event.keyCode }">
dels hittade jag ett förslag som funkar i Firefox men inte i Explorer:

Kod:

<input type="text" name="t1" size="10" onChange="t2.select();">
<input type="text" name="t2" size="10" onChange="t3.select();">
<input type="text" name="t3" size="10" onChange="t1.select();">

Dock ger Firebug felmeddelande ifrån sig:

Kod:

[Exception... "'Nekades tillstånd att sätta egenskap XULElement.selectedIndex' when calling method: [nsIAutoCompletePopup::selectedIndex]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: file:///F:/test.html :: onchange :: line 1" data: no]
Jag förstår inte vad felmeddelandet betyder, och det fungerar ju som jag hade tänkt i Firefox. Kan någon förklara?

Hur kan man få detta att fungera även i Explorer?

boena 2007-03-09 11:35

Det du behöver göra är att fixa en funktion istället och där använda dig av en IE-fix för att läsa in events. Du anropar sedan den från varje input-element med onChange...

Kod:

funktionensNamn(e)
{

if(!e) var e = window.event;  // IE-Fix

blablablabla kolla vilken knapp som är tryckt osv med keycode...

}

Inte för att jag förstår exakt varför du vill göra det då TAB är standard och människor kan bli förvirrade, om det är något internt för eget bruk dock så kan jag förstå ;)

etanders 2007-03-09 11:49

Citat:

Inte för att jag förstår exakt varför du vill göra det då TAB är standard och människor kan bli förvirrade, om det är något internt för eget bruk dock så kan jag förstå
Det handlar om en sida för "internt" bruk av ett fåtal personer som gör inmatningar av en större mängd numeriska koder vid upprepade tillfällen. Att kunna göra detta med en hand på den numeriska delen av tangentbordet skulle underlätta deras arbete mycket.

Får fortsätta experimentera med detta.

Holger 2007-03-09 12:32

Kod:

<input type="text" name="c1" onKeyDown="if (event.keyCode==13) { c2.focus(); }" /> <br />
<input type="text" name="c2" onKeyDown="if (event.keyCode==13) { c3.focus(); }" /> <br />
<input type="text" name="c3" onKeyDown="if (event.keyCode==13) { c1.focus(); }" /> <br />

Funkar för mig i Fx samt IE7.

totoo 2007-03-10 21:51

annars borde det gå att leka med onsubmit på formuläret. För ett enterslag resulterar ju ofta i en submit, och att hålla koll på vilket input-element som användes senast (för att veta vilket man ska hoppa till) är ju inga konstigheter.

Men ditt problem kanske redan är löst.


Alla tider är GMT +2. Klockan är nu 09:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson