wolfbee Skrevet 27. juni 2008 Del Skrevet 27. juni 2008 Jeg har en tabell fylt med asp tekstbokser. Jeg ønsker å navigere i tabellen, slik at når en trykker pil ned så flyttes en til tekstboksen under osv. Dette har jeg fått til ved å bruke javascript. Problemet er at Opera og Firefox ikke liker løsningen min, men i IE7 så fungerer det utmerket. Dette virker litt bakvendt på meg, men la gå. Er det noen som har noen tips til hvordan jeg skal få det til å fungere i Opera og firefox også? Under følger javascriptet mitt dersom noen trenger det. //ID er iden til tekstboksen, e er eventen(typisk et tastetrykk) function keyPressed(ID,e) { var rowCol = ID.toString().split(",") var currentRow = parseInt(rowCol[0]) var currentCol = parseInt(rowCol[1]) //alert("keyEvent:" + e.keyCode + " timeTextboxID: row: " + currentRow + " column: " + currentCol) var numberOfRows = document.getElementById('Table1').rows.length if(e.keyCode == 40 || e.keyCode == 13) { var field1 if (currentRow==numberOfRows-5 && currentCol!=6) { field1 = document.getElementById((0).toString()+","+(currentCol+1).toString()) } else { field1 = document.getElementById((currentRow+1).toString()+","+(currentCol).toString()) } field1.focus() field1.select() } else if(e.keyCode == 38) { var field2 if (currentRow==0) { field2 = document.getElementById((numberOfRows-5).toString()+","+(currentCol-1).toString()) } else { field2 = document.getElementById((currentRow-1).toString()+","+(currentCol).toString()) } field2.focus() field2.select() } else if(e.keyCode == 37) { var field3 if (currentCol==0) { field3 = document.getElementById((currentRow-1).toString()+","+(6).toString()) } else { field3 = document.getElementById((currentRow).toString()+","+(currentCol-1).toString()) } field3.focus() field3.select() } else if(e.keyCode == 39) { var field4 if (currentCol==6) { field4 = document.getElementById((currentRow+1).toString()+","+(0).toString()) } else { field4 = document.getElementById((currentRow).toString()+","+(currentCol+1).toString()) } field4.focus() field4.select() } } Og dette er aspx.cs koden min når tekstboksene mine blir initialisert: timeTextBox = new TimeTextBox(paramet 1, 2 osv); timeTextBox.ID = boxId; timeTextBox.Attributes["onkeydown"] = "java script:keyPressed(this.id,event)"; timeTextBox.Attributes["onfocus"] = "java script:select()"; Ikke bry dere om logikken, da alt skal fungere (TimeTextBox extender TextBox). Når en trykker pil venstre og pil høyre i Opera og firefox, så flytter bare markøren seg, mens tekstfeltet ikke blir markert. Men når en flytter pil opp og ned så flytter markøren seg, OG teksten blir markert(slik jeg vil ha det). Er det noen som har vært borti noe lignende? Tips? Lenke til kommentar
WhiteFire Skrevet 7. juli 2008 Del Skrevet 7. juli 2008 bump, bump, bumpeti BUMP! Er ikke noe videre stødig i javascript, men et tips kan jo være å laste ned web developer til firefox og feilsøke derfra. Lenke til kommentar
siDDis Skrevet 7. juli 2008 Del Skrevet 7. juli 2008 Nå veit eg ikkje heilt korleis koden din fungerer, men gjetter at logikken bak korleis dette fungerer er ikkje kompatibel med andre nettleserar. Om du skal navigere i ein tabell så må du lage ein datastruktur som definerer hvor dei skal peke. Feks, du må definere at feltet e peker til kolonne d til venstre, b oppover, i nedover og f til høyre. Så må du lage ein keyboard event som *lyser opp* det feltet når du flytter deg i datastrukturen. Lenke til kommentar
wolfbee Skrevet 8. juli 2008 Forfatter Del Skrevet 8. juli 2008 bump, bump, bumpeti BUMP! Er ikke noe videre stødig i javascript, men et tips kan jo være å laste ned web developer til firefox og feilsøke derfra. Takk for tipset, skal prøve det. Nå veit eg ikkje heilt korleis koden din fungerer, men gjetter at logikken bak korleis dette fungerer er ikkje kompatibel med andre nettleserar. O RLY? Om du skal navigere i ein tabell så må du lage ein datastruktur som definerer hvor dei skal peke. Feks, du må definere at feltet e peker til kolonne d til venstre, b oppover, i nedover og f til høyre. Så må du lage ein keyboard event som *lyser opp* det feltet når du flytter deg i datastrukturen. Ehm, i posten min står det at det fungerar utmerka i IE, men i Opera og FF så får eg ikkje fokus ved å gå til høgre eller venstre. Logikken fungerar, men den har ein liten "bug". Tips? Lenke til kommentar
siDDis Skrevet 8. juli 2008 Del Skrevet 8. juli 2008 Bruk firebug du, er rimeleg sikker på at det er noko IE only greier. Lenke til kommentar
RulleRimfrost Skrevet 18. juli 2008 Del Skrevet 18. juli 2008 Kanskje prøve å bruke keypress i stedet for keydown for å fange eventen ? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå