Avatar billede firehat Nybegynder
03. august 2005 - 23:23 Der er 3 kommentarer og
1 løsning

Tab i textarea virker ikke i firefox

Hej,

Ved at søge i nogen gamle spørgsmål fandt jeg følgende script som for tab til at virke i et textarea, men det virker ikke i firefox. Har ikke selv kunne rette det, og har ikke kunne finde andre koder som virker.

Her er koden:
<script language="javascript" type="text/javascript">
function tab(fld,e){
    charCode = (e.which)?e.which:e.keyCode;
    var txt;
    if(charCode==9){
        if(document.selection){
            txt = document.selection.createRange();
            txt.text = "\t";
        }else{
            fld.value += "\t";
        }
        return false;
    }else return true;
}
</script>

<textarea name="code" cols="100" rows="20" wrap="off" onkeydown="return tab(this,event);"></textarea>

Hvordan kan jeg få det til også at virke i firefox? I IE virker det fint, men i Firefox indsætter koden en tab til sidst i textarea'et - ikke der hvor cursoren er, som den burde - og så skifter den til næste felt/link, som den heller ikke skal.

Tak på forhånd!

Mvh
Mikkel
Avatar billede busschou Praktikant
04. august 2005 - 11:27 #1
Sådan her så sætter den en tab ind det rigtige sted i FF også
----
<script language="javascript" type="text/javascript">
function tab(fld,e){
  charCode = (e.which)?e.which:e.keyCode;
  var txt;
  if(charCode==9){
    if (fld.setSelectionRange) {
      fld.value = fld.value.substring(0,fld.selectionStart) + "\t" + fld.value.substring(fld.selectionEnd,fld.value.length);
    }else if(document.selection){
      txt = document.selection.createRange();
      txt.text = "\t";
    }else{
      fld.value += "\t";
    }
    return false;
  }else{
    return true;
  }
}
</script>

<textarea name="code" cols="100" rows="20" wrap="off" onkeydown="return tab(this,event);"></textarea>
----
Men jeg ved ikke hvordan du slipper af med at den rent faktisk også laver en tab og altså hopper videre til næste felt
Du kunne måske overveje at benytte en knap til det, hvorved der ingen problem er, tilsvarende som når man indsætter tags i et textarea
----
<script language="javascript" type="text/javascript">
function tab(fld,elm){
if (fld.setSelectionRange) {
  fld.value = fld.value.substring(0,fld.selectionStart) + elm + fld.value.substring(fld.selectionEnd,fld.value.length);
}else if(document.selection){
  fld.focus();
  var range = document.selection.createRange();
  range.text = elm;
}else{
  fld.value += elm;
}
}
</script>

<textarea id="code" cols="100" rows="20" wrap="off"></textarea>
<input type="button" value="Tab" onclick="tab(document.getElementById('code'),'\t');">
Avatar billede firehat Nybegynder
04. august 2005 - 12:35 #2
Tak! Det virker :)

Vil helst undgå at lave sådan en knap hvis jeg kan undgå det.

Kan man evt. ikke bruge onblur til at tjekke om charCode=9 og så sætte focus tilbage det rigtige sted?
Avatar billede busschou Praktikant
04. august 2005 - 12:40 #3
så vil jeg da lægge et svar :o)
Prøv ad med onblur, jeg har lige prøvet lidt, og umiddelbart hopper den videre alligevel :o/
Avatar billede busschou Praktikant
04. august 2005 - 12:40 #4
og svaret ;O) .. måske en anden har en godt løsning. prøver lige ad en gang mere
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