Avatar billede stufdbear Nybegynder
12. januar 2005 - 19:15 Der er 1 kommentar og
1 løsning

Brug af piletaster

Hejsa exp'er

Jeg har taget scriptet fra http://eksperten.dk/spm/381667 og det virker også fint, men er det muligt at en af jer kan lave en lille vidre udvikling af det med følgende tilføjet, Ctrl bruges til alle piletaster, ikke kun op og ned, samt at man ikke behøver at slippe Ctrl for at kunne hoppe videre igen? Så vil det bare være super fedt :o)

StufdBear

---- kode ----
<HTML>
<HEAD>
<TITLE>Naviger med piletaster</TITLE>
<script>
var boolCtrlDown = false;
var curField = null;

function doKeyDown(e) {
    if (!e) var e = window.event;
    if (e.keyCode) kCode = e.keyCode;
    else if (e.which) kCode = e.which;
    var elm;
    if (e.srcElement) elm = e.srcElement;
    else if (e.target) elm = e.target;
    else return false;
    curField = (elm.tagName.toUpperCase() == 'INPUT' && elm.type == 'text') ? elm : null;
    var boolDoCancel = false;
    switch (kCode) {
      case 37: if (boolCtrlDown) navVer('previous'); boolDoCancel = true; break; //Ctrl + venstre

pil
      case 38: navHor('previous'); boolDoCancel = true; break; //pil op
      case 39: if (boolCtrlDown) navVer('next'); boolDoCancel = true; break; // Ctrl + højre pil
      case 40: navHor('next'); boolDoCancel = true; break; //pil ned
        }
    boolCtrlDown = (kCode == 17);   
    if (boolDoCancel) {
        e.returnValue = false;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        }
}
function navVer(dir) {
    var elm = eval('curField.parentElement.' + dir + 'Sibling');
    if (elm != null) {
        elm = elm.firstChild;
        if (elm != null && elm.tagName.toUpperCase() == 'INPUT' && elm.type == 'text') elm.focus();
        }
}

function navHor(dir) {
    var elm = eval('curField.parentElement.parentElement.' + dir + 'Sibling');
    var ix = 0;
    var tmpElm = curField.parentElement;
    while (tmpElm.previousSibling) {
        ix++;
        tmpElm = tmpElm.previousSibling;
        }
    if (elm != null) {
        elm = elm.firstChild;
        if (elm != null) {
            i = 0;
            while (ix > i) {
                if (elm.nextSibling) {
                    elm = elm.nextSibling;
                    }
                else return false;
                i++;
                }
            if (elm.firstChild != null) elm.firstChild.focus();
            }
        }
}

</script>
</HEAD>

<BODY onload="inputTable.rows(0).cells(0).firstChild.focus()">

<TABLE id="inputTable" onkeydown="doKeyDown()">
<TR>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
</TR>
<TR>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
</TR>
<TR>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
</TR>
<TR>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
</TR>
<TR>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
    <TD><input type=text size=10></TD>
</TR>
</TABLE>
---- kode ----
Avatar billede stufdbear Nybegynder
12. januar 2005 - 19:36 #1
Erh.... lille taste fejl, Ctrl bruges selvfølgelig til venstre og højre :o) men at smide Ctrl på dem alle var jo så nemt nok med if (boolCtrlDown) nav, men det andet kan jeg ikke se.
Avatar billede stufdbear Nybegynder
24. juni 2005 - 13:14 #2
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Sådan: Opgradér din printerløsning uden store investeringer