19. september 2000 - 11:45Der 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>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<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>
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.
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...?
<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>
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.
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.
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.
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 }
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;
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 }
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 ;)
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.
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 }
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
Synes godt om
Ny brugerNybegynder
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.