Toon posts:

[JS] Na drukken op knop focus terugzetten op textarea

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn JavaScipt kennis is nooit erg fantastisch geweest, ik had er vanaf dat ik begon met websites maken al een hekel aan doordat het verschillend is op verschillende browsers. Omdat het toch de client-side uitkomst is voor form interactie besloot ik me laatst maar om me er wat meer in te verdiepen. Nu loop ik tegen het volgende probleem aan:

Ik ben een paar knoppen aan het maken die UBB tags in een textarea zetten. Die mogelijkheid vind je in veel forums waaronder GoT. Belangrijk vond ik dat het mogelijk is om ook om de selectie de tags te kunnen zetten en niet alleen aan het einde van de waarde van het tekstveld. Hier is de volgende testpagina uitgekomen:

http://www.rszdesign.com/temp/simple_buttons_test_js.php

Alles werkt prima in Firefox (1.0), maar in IE (6.0) werkt ie niet helemaal lekker wanneer er geen tekst is geselecteerd. Als ik de cursor aan het einde van de tekst in het tekstveld zet en op een knop druk dan behoudt de knop waarop ik drukte de focus en gaat de cursor niet terug naar het tekstveld.
  • Aan het einde van de invoer functie een focus() methode uitvoeren op het tekstveld haalt niks uit.
  • De functie een return false; laten geven aan het einde zorgt er ook niet voor dat de knoppen geen focus krijgen...
Ik heb verschillende scripts bekeken waaronder eentje van crisp, maar ik wil toch een beetje snappen wat ik maak zodat ik ook mijn eigen dingen kan maken.

Wat doe ik hier verkeerd, wat kan ik doen om dit op te lossen? Alvast bedankt!

PS Ik heb de storeCursor() functie en wanneer die wordt geroepen even in comment blocks gezet want die leek niet veel uit te halen. Misschien dat ik die niet goed gebruik als ie wel wordt geroepen...

[ Voor 11% gewijzigd door Verwijderd op 08-01-2005 02:05 ]


Verwijderd

Topicstarter
Ik geloof dat ik de verkeerde code heb gebruikt om de selectie te bewerken in IE... Ik gebruikte code om een tekst selectie te maken op de hele pagina (dus ook buiten het tekstveld), vervolgens zorgde ik ervoor dat de knoppen niet werkte wanneer er buiten het tekstveld een selectie was. Beetje omslachtig dus, vandaar dat het niet werkte op de andere manier.

Met gebruik van de storeCursor() functie uit het script van crisp werkt ie nu ook in IE.

Zie http://www.rszdesign.com/temp/simple_buttons_test_js2.php

Nog een vraagje:

Hoe zou ik de functie insertTag() (zie broncode van de pagina hierboven) kunnen definiëren als methode van een button of select veld?

[ Voor 15% gewijzigd door Verwijderd op 08-01-2005 02:41 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:46

crisp

Devver

Pixelated

de insertTag zou dan een method moeten zijn van de textarea lijkt me. In ieder geval kan je in Mozilla/Firefox iets dergelijks doen:
JavaScript:
1
2
3
4
5
6
7
8
9
function paste()
{
    var ta = document.getElementById('foo');
    ta.insertTag('[b][/b]');
}

HTMLTextAreaElement.prototype.insertTag = function(tag) {
    this.value += tag;
}

In IE zijn dergelijke constructies bij mijn weten niet mogelijk...

Intentionally left blank