Avatar billede s_raagaard Nybegynder
19. september 2000 - 11:45 Der er 16 kommentarer og
1 løsning

Tataturgenveje - nyt problem

Jeg fik dette geniale script af jumper.....der er blot et lille problem.

Det funger at jeg i en lang liste kan springe til et defineret felt som så kommer i fokus. for at mit bogstav som danne springet ikke bliver skrevet i feltet, er der indsat et \'return false;......men det gør bare at jeg slet ikke kan skrive i feltet når det er kommet i fokus.

Så hvordan kommer feltet i fokus uden at min tastaturgenvej bliver skrevet i feltet, og jeg så kan taste når det er kommet i fokus.


        <script language=\"Javascript\"><!--
function CheckAnchor(e){

  var keyCode = document.all ? event.keyCode : e.which; // ASCII kode for tasten, tager højde for IE eller NS
  var letter = String.fromCharCode(keyCode); // Omdan til et bogstav, f.eks. A

  var form = document.Juice; // Skift formNavn ud med navnet på din form (<form name=\"formNavn\">)

  if (form[letter + \"produkt1\"]){ // Hvis der findes et felt i form ved navn letter+produkt1, f.eks. Aprodukt1
    form[letter + \"produkt1\"].focus(); // Så hopper vi derned
  }
return false; // Annuler tastetrykket
}

if (document.layers){
  document.captureEvents(Event.KEYDOWN)
}
document.onkeydown = CheckAnchor;
// -->
        </script>
Avatar billede jumper Nybegynder
19. september 2000 - 12:05 #1
<script language=\"Javascript\"><!--
function CheckAnchor(e){

  if ( (document.layers && e.target!=document) || (document.all && event.srcElement.tagName==\"INPUT\" ) ){
    return true; // Hvis CheckAnchor() bliver udført fra et tekstfelt
  }

  var keyCode = document.all ? event.keyCode : e.which; // ASCII kode for tasten, tager højde for IE eller NS
  var letter = String.fromCharCode(keyCode); // Omdan til et bogstav, f.eks. A

  var form = document.Juice; // Skift formNavn ud med navnet på din form (<form name=\"formNavn\">)

  if (form[letter + \"produkt1\"]){ // Hvis der findes et felt i form ved navn letter+produkt1, f.eks. Aprodukt1
    form[letter + \"produkt1\"].focus(); // Så hopper vi derned
  }
return false; // Annuler tastetrykket
}

if (document.layers){
  document.captureEvents(Event.KEYDOWN)
}
document.onkeydown = CheckAnchor;
// -->
</script>
Avatar billede jumper Nybegynder
19. september 2000 - 12:07 #2
Det skulle gerne gøre det. En lille forklaring:

Jeg tilføjede

if ( (document.layers && e.target!=document) || (document.all && event.srcElement.tagName==\"INPUT\" ) ){
    return true; // Hvis CheckAnchor() bliver udført fra et tekstfelt
  }

der tjekker:

Hvis Netscape og event\'ens target ikke er document eller IE og elementet der fyrede event\'en var et INPUT, så forlader vi funktionen pænt og lader tasten blive skrevet.

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 13:02 #3
hej jumper

det virker men det var ikke helt det jeg mente, den er mere kryptisk....

Jeg skal kun skrive tal i felterne (antal af produktet).....når jeg f.eks. taster A, så hopper jeg til Aprodukt1 og skriver mit antal her, jeg skal måske i dette produktafsnit af listen bruge nogle af de næste felter så her bruger jeg bare tab-tasten.....så skal jeg til et andet sted i listen, jeg taster måske D og springer til Dprodukt1 og kan fortsætte på samme måde herfra, taster så B o.s.v.

Er det noget med nummerisk adskillelse, eller hvordan kan det gøres...?

/søren
Avatar billede jumper Nybegynder
19. september 2000 - 13:07 #4
Ahh okay, så er jeg med igen ;)

Okay, så ændrer vi da bare en smule:

<script language=\"Javascript\"><!--
function CheckAnchor(e){

  var keyCode = document.all ? event.keyCode : e.which; // ASCII kode for tasten, tager højde for IE eller NS
  var letter = String.fromCharCode(keyCode); // Omdan til et bogstav, f.eks. A

  if (letter >= \"0\" && letter <= \"9\"){ // Hvis det er 0-9
    return true; // Så smutter vi pænt igen
  }

  var form = document.Juice; // Skift formNavn ud med navnet på din form (<form name=\"formNavn\">)

  if (form[letter + \"produkt1\"]){ // Hvis der findes et felt i form ved navn letter+produkt1, f.eks. Aprodukt1
    form[letter + \"produkt1\"].focus(); // Så hopper vi derned
  }
return false; // Annuler tastetrykket
}

if (document.layers){
  document.captureEvents(Event.KEYDOWN)
}
document.onkeydown = CheckAnchor;
// -->
</script>

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 13:21 #5
Hej

Nu kan jeg ikke få lov at skrive i felterne igen, heller ikke talværdi.

Når jeg springer til et felt med et bogstav, så skal der vel være \'return true\' når jeg skriver tal....bliver den nu ikke ophævet af den \'return false\' der kommer længere nede.

/søren
Avatar billede jumper Nybegynder
19. september 2000 - 13:25 #6
Hmm, prøv at erstatte

  if (letter >= \"0\" && letter <= \"9\"){ // Hvis det er 0-9
    return true; // Så smutter vi pænt igen
  }

med

  if (\"0123456789\".indexOf(letter)>=0){ // Hvis det er 0-9
    return true; // Så smutter vi pænt
  }

Når du kalder return true, vil funktionen blive afbrudt, derfor udføres resten af koden ikke *s*

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 13:51 #7
Hej Thor

Det er jo genialt det her.....men hvordan kommer det til at virke på det numeriske tastatur også.....det er blot det sidste, så er det simplelt så englene swinger.

/søren
Avatar billede jumper Nybegynder
19. september 2000 - 13:58 #8
Jeg kan ikke huske om Netscape reagerer blot det mindste rigtigt på det numeriske tastatur. IE gør ihvertfald. Uanset hvad, så ændrer vi

if (\"0123456789\".indexOf(letter)>=0){ // Hvis det er 0-9
    return true; // Så smutter vi pænt
  }

til

if (\"0123456789\".indexOf(letter)>=0 || (keycode>=96 && keyCode <=105) ){ // Hvis det er 0-9 eller det numeriske tastatur
    return true; // Så smutter vi pænt
  }

Ovenstående kræver selvf. at man har slået det numeriske tastatur til (med NumLock), ellers skal der tjekkes på andre keycodes.

/Thor
Avatar billede jumper Nybegynder
19. september 2000 - 13:59 #9
sorry fejl, keycode skulle være keyCode, så den rigtige kode er

if (\"0123456789\".indexOf(letter)>=0 || (keyCode>=96 && keyCode <=105) ){ // Hvis det er 0-9 eller det numeriske tastatur
    return true; // Så smutter vi pænt
  }

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 14:34 #10
hej Thor

Genialt....hvad er keycode for TAB tasten, så jeg kan få den til at virke også.....jeg smider flere point i.

/søren
Avatar billede jumper Nybegynder
19. september 2000 - 14:36 #11
keycode for TAB tasten er 9 ;)

/Thor
Avatar billede jumper Nybegynder
19. september 2000 - 14:40 #12
Og hvis du har brug for at finde keycodes til flere taster, kan du bruge følgende:

<html>
<head>
<script language=\"Javascript\">
<!--

function CheckKey(e){
  var keyCode = document.all ? event.keyCode : e.which; // ASCII kode for tasten, tager højde for IE eller NS
  var letter = String.fromCharCode(keyCode); // Omdan til et bogstav, f.eks. A

  alert(\"keyCode = \" + keyCode + \"\\nbogstav = \" + letter); // Viser det

}

if (document.layers){
  document.captureEvents(Event.KEYDOWN)
}
document.onkeydown = CheckKey;


//-->
</script>
</head>
<body></body></html>

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 15:37 #13
En aller aller sidste ting......keycode=9 , KeyCode=13 og keyCode=43 skal også ignoreres, eller rettere sættes i return true sætningen.
Således at TAB og + tasten virker som de plejer.

Så man også kan tabbe igennem listen, samt bruge plustasten, som bruges i et andet script til at tabbe fra det ene felt til det andet.

er det noget alá


if (\"0123456789\".indexOf(letter)>=0 || (keyCode>=96 && keyCode <=105) || (keyCode=9)){ // Hvis det er 0-9 eller det numeriske tastatur
    return true; // Så smutter vi pænt
  }


/søren
Avatar billede jumper Nybegynder
19. september 2000 - 15:44 #14
Tja, vi kan da hurtigt modificere det lidt, så det bliver nemmere at tilrette:

var trueCodes = \"9;13;43;\"; // keycodes der skal returneres true på

  if (\"0123456789\".indexOf(letter)>=0 || (keyCode>=96 && keyCode <=105) || trueCodes.indexOf(keycode+\";\")>=0){ // Hvis det er 0-9 eller det numeriske tastatur
    return true; // Så smutter vi pænt
  }

Så kan du blot tilføje keycodes i variablen truecodes (efterfulgt af ;), hvis der skulle være flere ;)

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 16:25 #15
Det virker ikke....helt, når jeg nu taster alt andet en tal får jeg at vide:

Fejl: \'KeyCode\' ikke defineret....den ligger da i den første variabel...?

Så jeg kan ikke kabe focus i et felt ved at taste, når jeg så selv sætter fokus i feltet, kan jeg kun skrive tal, som jeg skal.....men ikke sprige videre på andre taster.

/søren
Avatar billede jumper Nybegynder
19. september 2000 - 16:27 #16
argh, igen keycode med lille *gg*

Ret

  if (\"0123456789\".indexOf(letter)>=0 || (keyCode>=96 && keyCode <=105) || trueCodes.indexOf(keycode+\";\")>=0){ // Hvis det er 0-9 eller det numeriske tastatur
    return true; // Så smutter vi pænt
  }

til

  if (\"0123456789\".indexOf(letter)>=0 || (keyCode>=96 && keyCode <=105) || trueCodes.indexOf(keyCode+\";\")>=0){ // Hvis det er 0-9 eller det numeriske tastatur
    return true; // Så smutter vi pænt
  }

/Thor
Avatar billede s_raagaard Nybegynder
19. september 2000 - 17:12 #17
Yes....super duper.....kanon, så virker det fuldstændig som det skal.....tak skal du ha\'.

Jeg har ikke så meget mere end 100p at dele ud af, så dem får du her.

/søren
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