Toon posts:

[JAVASCRIPT] createTextRange(); probleem onthouden caret pos

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een UBB script. Heb er eentje gevonden, en ben die aan mijn eigen wensen aan het modden. Zover is het gevorderd:

code:
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
objInput = document.getElementById('txtInput');

function bb(sUBB, eUBB){ 
  var objTxtArea = document.getElementById('txtInput');
  if (!eUBB){
   eUBB = ' '+sUBB+' '; // Smileys..
   sUBB = '';
  }
  if (objTxtArea.selectionStart || objTxtArea.selectionStart == 0){
      window.status = 'objTxtArea.selectionStart';
    var ss = objTxtArea.selectionStart;
    var se = objTxtArea.selectionEnd;
    objTxtArea.value = objTxtArea.value.substring(0, ss) + sUBB + objTxtArea.value.substring(ss, se) + eUBB + objTxtArea.value.substring(se, objTxtArea.value.length);
    if (sUBB.length != 0){
        objTxtArea.selectionStart = ss;
        objTxtArea.selectionEnd = se + sUBB.length + eUBB.length;
    } else {
        objTxtArea.selectionStart = se + sUBB.length + eUBB.length;
        objTxtArea.selectionEnd = objTxtArea.selectionStart;
    }
    objTxtArea.focus();
  } else if (objTxtArea.createTextRange) {
    objTxtArea.focus();    //Needs to get focus to prevent other objects to get ubb codes
    objRng = objTxtArea.createTextRange().duplicate();
      document.selection.createRange().text = sUBB + document.selection.createRange().text + eUBB;
        objRng.collapse(false);
        objRng.move('character',eUBB.length - 1);
        objRng.select();
        
    } else {
    txtArea.value = txtArea.value + sUBB + eUBB;
  }
}


Ik heb ook een button:

code:
1
<input type="button" value="B" onClick="bb('[b]','[/b]')">


Wel, het is dus de bedoeling (in Internet Explorer) dat als ik insert, en dat de caret knippert tussen de en tags in.

En dat doet het ook... Maar alleen om de 2x:

De eerste keer dat ik op de bold knop klik, knippert de caret inderdaad tussen en
De tweede keer echter knippert de cursor aan het einde van de tekst
De derde keer knippert de caret inderdaad weer tussen en enz.

En ik heb werkelijk geen flauw idee waarom. Iemand enig idee?

Verwijderd

Topicstarter
Pfff.. Gebeurd me nu altijd. Schrijf ik het op, dan pas komt de clue...

Dit werkt dus wel ;)

objRng = document.selection.createRange();

in plaats van

objRng = objTxtArea.createTextRange().duplicate();