Gå til innhold

Problem med select() og focus() i tekstbokser


Anbefalte innlegg

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
Videoannonse
Annonse

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
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
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...