[JS] Tekst invoeren in textarea op plaats van cursor*

Pagina: 1
Acties:

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 08:19
Ik probeer net zoiets te maken als op GoT voor een CMS alleen ik stuit op een probleempje. Ik heb namelijk een code gemaakt dat als je op [B] klikt (een plaatje) dat er in een textarea de code <B></B> komt te staan, mbv de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript"> 
function insertcode(type) 
{ 
    var strInsert = ''; 
     
    switch (type) 
    { 
        case 'bold': 
            strInsert = '<b></b>';         
            break; 
             
        default: 
            break; 
    } 
     
    var elmBericht = document.getElementById("bericht"); 
    var strCurContent = elmBericht.value; 
    var strNewContent = strCurContent + strInsert; 
    elmBericht.value = strNewContent; 
} 
</script> 
[img]"bold.gif"[/img]


Nu wil ik dat er twee functies in komen, ik weet alleen niet hoe:
1. (belangrijkste): De <B></B> code moet op de plek komen waar op dat moment de cursor is (en niet zoals nu aan het einde van de lap tekst in de textarea)
2. Als je een stuk text selecteert en je drukt op de [B] knop, dan moet er links van de tekst een <B> komen en rechts van het geselecteede stuk een </B>.

Ik heb op de search gekeken maar ik kon niks vinden. Wel genoeg over het aanmaken van de codes, maar dat is me dus wel gelukt.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 08:19
:o
Schaamteloos. Excuus!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 16:34

orf

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function insertAtCursor(myField, myValue) {
  //IE support
  if (document.selection) {
    myField.focus();
    sel = document.selection.createRange();
    sel.text = myValue;
  }
  //MOZILLA/NETSCAPE support
  else if (myField.selectionStart || myField.selectionStart == '0') {
    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos)
                  + myValue 
                  + myField.value.substring(endPos, myField.value.length);
  } else {
    myField.value += myValue;
  }
}

// calling the function

insertAtCursor(document.formName.fieldName, 'this value');

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 08:19
Volgens mij is dat gewoon Javascript, want in PHP vorm werkt het niet.

In JS trouwens ook niet, ik heb 'this value' veranderd naar het berict id van de form, en ik heb dit scriptje onderaan mijn bovenstaande script gezet, onder de laatste }.

Toch werkt het nog niet..

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 21-04 13:13
Natuurlijk is het geen PHP. PHP is een server-side taal en daarmee dus nutteloos voor dergelijke toepassingen, tenzij je het venster bij elke druk op een knop wilt verversen :|

En volgens mij zijn er meer dan voldoende JS-voorbeelden te vinden. Al gegooglet?

[ Voor 20% gewijzigd door frickY op 08-12-2005 10:30 ]


  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 08:19
Indd, de juiste zoektermen doen wonderen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript"> 
<!-- 
    function formatText (tag) { 
        var selectedText = document.selection.createRange().text; 
         
        if (selectedText != "") { 
            var newText = "<" + tag + ">" + selectedText + "</" + tag + ">"; 
            document.selection.createRange().text = newText; 
        } 
    } 
//--> 
</script>


Die zet de code netjes om de geselecteerde tekst. Alleen nu nog bij mijn FP: hoe krijg ik hem dan op de plek waar de cursor op dat moment is? Ik heb het script geprobeerd die orf heeft gepost, maar ik weet niet wat ik bij 'this value' in moet voeren. Want zo werkt ie namelijk niet :)

[ Voor 20% gewijzigd door Ad Hox op 08-12-2005 10:56 ]


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 16:34

orf

PHP was alleen voor de code highlighting:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
<script type="text/javascript">
 
  function insert(value){
    insertAtCursor(document.getElementById('tekstvak'), value);
  }
  
  function insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection) {
      myField.focus();
      sel = document.selection.createRange();
      sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
      var startPos = myField.selectionStart;
      var endPos = myField.selectionEnd;
      myField.value = myField.value.substring(0, startPos)
                    + myValue
                    + myField.value.substring(endPos, myField.value.length);
    } else {
      myField.value += myValue;
    }
  }
</script>
    <title></title>
  </head>
  <body>
    <form method="post" action="#">
      <p><input type="button" value="B" onclick="insert('[' + this.value + ']');" /> 
      <input type="button" value="I" onclick="insert('[' + this.value + ']');" /> 
      <input type="button" value="U" onclick="insert('[' + this.value + ']');" /></p>

      <p><textarea name="tekstvak" id="tekstvak"></textarea></p>
    </form>
  </body>
</html>
Pagina: 1