[js] onkeydown/ up verschil

Pagina: 1
Acties:

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 14-08 14:02
Al opgelost.. sowwy (zie eerste reply post)


ik heb een code gemaakt voor een simpele 'online html editor' deze werkt met een textarea waarin alles getikt wordt met daaronder een preview veld. door middel van wat knoppen kan je simpele tags toeveogen zoals bol / italic/ href en img. nu wil ik deze meteen laten zien in het preview veld... dit deed ik met onkeypress. dit had als nadeel dat het een karakter achterloopt op wat je typt.. onkeydown precies hetzelfde verhaal.. onkeydown werkt wel alleen het nadeel is dat hij het direct getypte in het textarea weghaald zodra je een automagische tag toevoegt..
JavaScript:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function testingBrowser(laag)
{
    if( document.getElementById )
    {
       return document.getElementById(laag);
    }
    else if( document.all )
    {
        return document.all[laag];
    }
    else
    {
      return document[laag];
   }
}

function replaceAll (streng, soeg, erstat)
{ var st = streng;
  if (soeg.length == 0)
     return st;
  var idx = st.indexOf(soeg);
  while (idx >= 0)        
  {  st = st.substring(0,idx) + erstat + st.substr(idx+soeg.length);
     idx = st.indexOf(soeg);
  }
  return st;
}

function previewHTML(laag)
{
   target = testingBrowser("textarea" + laag);
   allText = replaceAll (target.value,"\n","<br>");    
   testingBrowser("test" + laag).innerHTML = allText;
}

function putText(laag,text)
{
   target = testingBrowser("textarea" + laag);
   if ( target )
   {
      if ( document.all && target.cursorPos )
      {
         var cursorPos = target.cursorPos;
         cursorPos.text = cursorPos.text.charAt(cursorPos.text.length - 1) == ' ' ? text + ' ' : text;
      }
      else if ( typeof target.selectionStart != 'undefined' )
      {
         var sStart = target.selectionStart;
         var sEnd = target.selectionEnd;
         target.value = target.value.substr(0, sStart) + text + target.value.substr(sEnd, target.value.length);
         target.selectionStart = sStart == sEnd ? sStart + text.length : sStart;
         target.selectionEnd = sStart + text.length;
      }
      else
      {
         target.value += text;
      }
      target.focus();
   }
}

kleine uitleg betreffende variable laag dit is een waarde waarmee wordt aangegeven welke textarea hij mag gebruiken.. op 1 pagina staan er meerder..

[ Voor 5% gewijzigd door Daniel304 op 13-11-2003 13:50 ]


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 14-08 14:02
mijn excuses ik heb het al opgelost.. het kwam omdat de positie van de cursor nog verkeerd stond.. het veranderen van volgorde van de verschillende events deed zijn werk...
in iedergeval bedankt