Avatar billede ingeman Seniormester
20. oktober 2007 - 13:37 Der er 27 kommentarer og
1 løsning

Er der nogen der ved hvordan den her fåes til at virke ?

<script type="text/javascript">
/**
  * Allows moving around inputs/select by Ctrl+arrows
  *
  * @param  object  event data
  */
function onKeyDownArrowsHandler(e) {
    e = e||window.event;
    var o = (e.srcElement||e.target);
    if (!o) return;
    if (o.tagName != "TEXTAREA" && o.tagName != "INPUT" && o.tagName != "SELECT") return;
    if (navigator.userAgent.toLowerCase().indexOf('applewebkit/') != -1) {
        if (e.ctrlKey || e.shiftKey || !e.altKey) return;
    } else {
        if (!e.ctrlKey || e.shiftKey || e.altKey) return;
    }
    if (!o.id) return;

    var pos = o.id.split("_");
    if (pos[0] != "field" || typeof pos[2] == "undefined") return;

    var x = pos[2], y=pos[1];

    // skip non existent fields
    for (i=0; i<10; i++)
    {
        if (switch_movement) {
            switch(e.keyCode) {
                case 38: x--; break; // up
                case 40: x++; break; // down
                case 37: y--; break; // left
                case 39: y++; break; // right
                default: return;
            }
        } else {
            switch(e.keyCode) {
                case 38: y--; break; // up
                case 40: y++; break; // down
                case 37: x--; break; // left
                case 39: x++; break; // right
                default: return;
            }
        }

        var id = "field_" + y + "_" + x;
        var nO = document.getElementById(id);
        if (!nO) {
            var id = "field_" + y + "_" + x + "_0";
            var nO = document.getElementById(id);
        }
        if (nO) break;
    }

    if (!nO) return;
    nO.focus();
    if (nO.tagName != 'SELECT') {
        nO.select();
    }
    e.returnValue = false;
}
</script>
Avatar billede w13 Novice
20. oktober 2007 - 13:55 #1
Nej..

Hvad skal den helt præcis gøre?

Hvad gør den helt præcis?

Fejlmeddelelse?

Evt. et link, så vi kan afprøve det?
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:08 #2
Har fundet den ude på nettet - jeg ønsker at være istand til at køre rundt mellem felterne med ctrl arrow ?
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:10 #3
mangler selvfølgelig lidt body kode !
Avatar billede w13 Novice
20. oktober 2007 - 14:36 #4
Men koden gør det ikke? På hvilken måde gør den det ikke?
Avatar billede olebole Juniormester
20. oktober 2007 - 14:41 #5
<ole>

Du skal nok vise noget markup-kode også. Jeg kan se, der er nogle restiktioner omkring navngivningen af felter, du skal overholde - gør du det?

/mvh
</bole>
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:42 #6
While Not RS.EOF%>

                      <td class=<%=OurClass%> style="padding:0px;">
                        <table cellspacing=0 cellpadding=0 style="width:<%=Havnbr%>px;">
                              <tr>
                                      <td <%if sidstelin=j then%>class=linie5<%else%>class=linie3<%end if%> style="line-height:<%=LinAfst%>px;width:<%=kol%>px;" align=Right><i><%=RS.Fields("Eks"&cStr(J))%>&nbsp;</td>
                                      <td <%if sidstelin=j then%>class=linie5<%else%>class=linie3<%end if%>  style="width:<%=kol%>px;" align=Right ><i><%=RS.Fields("Aks"&cStr(J))%>&nbsp;</td>
                                      <td <%if sidstelin=j then%>class=linie6<%else%>class=linie4<%end if%> style="width:<%=kol%>px;" align=Right ><i><%=RS.Fields("Vfks"&cStr(J))%>&nbsp;</td>

                              </tr>
                        </table>
                      </td>
<%       
                RS.MoveNext
              Wend
Avatar billede olebole Juniormester
20. oktober 2007 - 14:44 #7
markup-kode ... ikke ASP. Hvad står der i den kode, browseren ser?
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:44 #8
<Body >
<Form name='Form1'>
<input type=text value="This is Some Text" size=25  onKeyPress="return OnKeyPress(this)"      tabindex='0'><br>
<input type=text value="Some Text" size=25  onKeyPress="return OnKeyPress(this)"                  tabindex='1'><br>
<input type=text value="Nothing" size=25  onKeyPress="return OnKeyPress(this)"                          tabindex='2'><br>
<input type=text value="Two Words" size=25  onKeyPress="return OnKeyPress(this)"                 tabindex='3'><br>
</Form>
</Body>
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:45 #9
Ønsker være istand til at køre rund blandt felter med ctrl arrow
Avatar billede olebole Juniormester
20. oktober 2007 - 14:48 #10
Du må prøve at kikke der, hvor du hentede scriptet - og se, hvordan de har navngivet felterne. Dels skal de vel have en name-attribut for at kunne sende noget til en server - og dels skal de have en id for atscriptet kan fungere. Noget à la: 'field_2_4' - og 'field_2_4_0'
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:50 #11
Det var der ikke - så koden skal omskrives til at virke med feks det her:

<Body >
<Form name='Form1'>
<input type=text value="This is Some Text" size=25  onKeyPress="return OnKeyPress(this)"      tabindex='0'><br>
<input type=text value="Some Text" size=25  onKeyPress="return OnKeyPress(this)"                  tabindex='1'><br>
<input type=text value="Nothing" size=25  onKeyPress="return OnKeyPress(this)"                          tabindex='2'><br>
<input type=text value="Two Words" size=25  onKeyPress="return OnKeyPress(this)"                tabindex='3'><br>
</Form>
</Body>
Avatar billede olebole Juniormester
20. oktober 2007 - 14:51 #12
- i det hele taget, kan koden i (20/10-2007 14:44:30) eller (20/10-2007 14:50:36) ikke være den, der bliver skrevet ud af de kode, du viste i (20/10-2007 14:42:25).

Hvis vi skal hjælpe, må du tage dit problem ligeså seriøst, som vi gør  :)
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:52 #13
jeg har en side med 180 input felter.
Avatar billede olebole Juniormester
20. oktober 2007 - 14:56 #14
Jeg forstår ikke, hvad du mener med:
    "Det var der ikke - så koden skal omskrives til at virke med feks det her:"

Der, hvor scriptet har fungeret, har man med statsgaranti brugt id'er på felterne. Ellers kan scriptet simpelthen ikke virke. Uden en name-attribut kan formen ikke sende noget til en server.

Der er en del, der ganske enkelt ikke kan passe i dette spørgsmål. Det er stortset umuligt at hjælpe, hvis det, du skriver, ikke passer  :)
Avatar billede ingeman Seniormester
20. oktober 2007 - 14:59 #15
Du har ret - men forstil dig en form hvor du har 18 input felter vandret i 10 rækker.
hvor man så skulle være istand til at flytte rundt i felterne med ctrl arrow højre - venstre - up - down.
Det stykke kode har jeg ikke da det er en del af en støre ASP del.
Avatar billede ingeman Seniormester
20. oktober 2007 - 15:01 #16
body delen med form etc skal først generes og så tilpasses til scriptet.
Avatar billede ingeman Seniormester
20. oktober 2007 - 15:03 #17
Det handler mest om at jeg mangler kode for at scriptet til at virke efter hensigten.
Avatar billede olebole Juniormester
20. oktober 2007 - 15:04 #18
(20/10-2007 14:59:07) >> Ja, det forestiller jeg mig så - og i mellemtiden forestiller du dig spørgsmålet:
    "Når nu jeg kommer til Athens bygrænse, skal jeg så dreje til højre eller til venstre ... og du må ikke kikke på et kort"

- så ved du nogenlunde, hvor vi er henne med denne tråd  ;o)

"body delen med form etc skal først generes og så tilpasses til scriptet." >> Vil du lave en gearkasse og så bygge bilen udenom dén?

Du gør det sandelig ikke let at hjælpe  :)
Avatar billede ingeman Seniormester
20. oktober 2007 - 15:18 #19
Nej det kan du have ret i ! - jeg fandt gearkassen - og nu skal jeg prøve at bygge en bil der passer til gearkassen - eller om du vil rette i gearkassen så den passer til bilen.
Avatar billede olebole Juniormester
20. oktober 2007 - 15:21 #20
"eller om du vil rette i gearkassen så den passer til bilen." >> Jamen, det er jo lige præcis, hvad jeg så gerne ville - men jeg må/kan ikke se din arbejdstegning til bilen. Så er det altså ret svært at hjælpe med at tilpasse gearkassen  ;o)
Avatar billede olebole Juniormester
20. oktober 2007 - 15:31 #21
Der er også nogle 'særheder' i scriptet. Hvad er f.eks: 'switch_movement' - og hvor kommer den fra? En anden ting er, at du skal bruge 'onkeydown' i stedet for 'onkeypress' ... men det får ikke scriptet til at virke i sig selv  :)
Avatar billede olebole Juniormester
20. oktober 2007 - 15:40 #22
Sætter du den mystiske variabel til false:

var switch_movement = false;
function onKeyDownArrowsHandler(e) {
... ... ... ...
... ... ... ...

- og skriver noget markup à la:

<div>
<!-- Række ét -->
<input id="field_0_0" onkeydown="return onKeyDownArrowsHandler(event)" type="text">
<input id="field_0_1" onkeydown="return onKeyDownArrowsHandler(event)" type="text">
<input id="field_0_2" onkeydown="return onKeyDownArrowsHandler(event)" type="text"></div>

<div>
<!-- Række to -->
<input id="field_1_0" onkeydown="return onKeyDownArrowsHandler(event)" type="text">
<input id="field_1_1" onkeydown="return onKeyDownArrowsHandler(event)" type="text">
<input id="field_1_2" onkeydown="return onKeyDownArrowsHandler(event)" type="text"></div>

- så skulle det vel funke(?)  :)
Avatar billede ingeman Seniormester
20. oktober 2007 - 15:49 #23
Det virker - med lille ændring i gearkassen - beklager jeg var iklar i min hensigt med scriptet - tak for hjælpen - åbn svar.
Avatar billede ingeman Seniormester
20. oktober 2007 - 15:50 #24
Ps: Javascript jeg lærer det aldrig !
Avatar billede olebole Juniormester
20. oktober 2007 - 15:58 #25
Selvtak  ;o)
Avatar billede olebole Juniormester
20. oktober 2007 - 16:07 #26
- og så ville jeg nok skrive:

        if (!nO) {
            var id = "field_" + ((y*1)+1) + "_" + 0
            var nO = document.getElementById(id);
        }

- i stedet for:

        if (!nO) {
            var id = "field_" + (y+1) + "_" + x;
            var nO = document.getElementById(id);
        }

Så fortsætter den med første felt i næste række (hvis der er flere rækker), når den er nået til sidste felt i en række  :)
Avatar billede olebole Juniormester
20. oktober 2007 - 16:08 #27
Vrøvl! Det var i stedet for:

        if (!nO) {
            var id = "field_" + y + "_" + x + "_0";
            var nO = document.getElementById(id);
        }
Avatar billede olebole Juniormester
20. oktober 2007 - 16:28 #28
- og tak for points  ;o)
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