Avatar billede thb Nybegynder
20. november 2002 - 23:38 Der er 8 kommentarer og
1 løsning

Markering

Hey alle

Ved ikke lige hvad dette skal ind under...

Jeg skal høre om der er nogle der ved om man kan registrere at noget tekst er blevet markeret i en tekstbox... ??

Thomas
Avatar billede edutasia Nybegynder
20. november 2002 - 23:41 #1
Du kan lave en event handler i JavaScript, som kaldes ved "onkeypress" og "onclick". Den skal checke 1. om "event.srcElement.name" er lig med navnet på din tekstboks og 2. om document.selection.createRange().text IKKE er en tom streng.

Jeg kan godt uddybe det, hvis ovenstående er volapyk...
Avatar billede edutasia Nybegynder
20. november 2002 - 23:51 #2
Testede lige for en sikkerheds skyld - du skal bruge "onkeyup" i stedet for "onkeypress" hvis du vil have event handleren knyttet til tekstboksen:


<HTML>
<HEAD>
<TITLE>Check om tekst er markeret</TITLE>
<SCRIPT>
function checkMe() {
  if (event.srcElement.name == 'textBox' && document.selection.createRange().text != '') alert('der er markeret noget');
}
</SCRIPT>
</HEAD>
<BODY>
<TEXTAREA NAME="textBox" COLS="35" ROWS="6" onkeyup="checkMe()" onclick="checkMe()">
marker det her
</TEXTAREA>
</BODY>
</HTML>
Avatar billede bitphil Nybegynder
21. november 2002 - 00:24 #3
Hvis du udvider ovenstående således, så fyrer den ikke af hver gang man slipper pilen i en markering med shift.

<HTML>
<HEAD>
<TITLE>Check om tekst er markeret</TITLE>
<SCRIPT>
var shifttastnede=false;
function checkMe() {
  if (event.srcElement.name == 'textBox' && document.selection.createRange().text != '') alert('der er markeret

noget');
}
function shiftTastNed() {
    if (event.shiftKey) {
        shifttastnede=true;
    }
 
}
function shiftTastOp() {
    if (!event.shiftKey && shifttastnede) {
        shifttastnede=false;
        checkMe();
    }
}


</SCRIPT>
</HEAD>
<BODY>
<TEXTAREA NAME="textBox" COLS="35" ROWS="6" onkeydown="shiftTastNed();" onkeyup="shiftTastOp();"

onclick="checkMe();">
marker det her
</TEXTAREA>
</BODY>
</HTML>
Avatar billede thb Nybegynder
21. november 2002 - 09:17 #4
Det ser godt ud... jeg tjekker det senere idag... har desværre ikke tid nu...
Men hvad hvis jeg vil sætte noget ind på begge sider af det markerede, når der trykkes på et link, er det noget du lige kan putte på... :)
Du kan godt få nogle flere point...

Thomas
Avatar billede edutasia Nybegynder
21. november 2002 - 13:26 #5
Det skulle vel aldrig være en online editor, du laver? :-)

Jeg har udvidet scriptet med tre redigeringsfunktioner. Du kan nemt lave flere knapper - de skal blot kalde funktionen formatText med to parametre: startTag og endTag - f.eks. formatText('<b>','</b>')

<HTML>
<HEAD>
<TITLE>Editor</TITLE>
<STYLE>
#idToolbar INPUT {border: 2px groove white; font-weight:bold}
</STYLE>
<SCRIPT>
function checkMe() {
  var newState = (event.srcElement.name == 'textBox' && document.selection.createRange().text != '') ? false : true;
  var coll = document.getElementById('idToolbar').all.tags('input');
  for (var i=0; i<coll.length; i++) coll[i].disabled = newState;
}

function formatText(startTag,endTag) {
  document.selection.createRange().text = startTag + document.selection.createRange().text + endTag; 
}

</SCRIPT>
</HEAD>
<BODY>
<DIV id="idToolbar">
<INPUT TYPE=button ONCLICK="formatText('<b>','</b>')" NAME="boldButton" VALUE=" F " DISABLED>
<INPUT TYPE=button ONCLICK="formatText('<i>','</i>')" NAME="italicButton" VALUE=" K " DISABLED>
<INPUT TYPE=button ONCLICK="formatText('<u>','</u>')" NAME="underlineButton" VALUE=" U " DISABLED>
</DIV>
<TEXTAREA NAME="textBox" COLS="35" ROWS="6" onkeyup="checkMe();" onclick="checkMe();" ondblclick="checkMe()">
marker det her
</TEXTAREA>
</BODY>
</HTML>
Avatar billede thb Nybegynder
21. november 2002 - 15:56 #6
Det er alt for vildt... :) :) :)

Og jo du har afsløret mig... det er en editor... :) Er det noget du har lavet på før ????

Men der er en lille ting, det er ikke noget af særlig stor betydning, men når man markere noget, og så trykke på en knap, så forsvinder markeringen, men man kan stadigvæk sætte noget ind, så enten skal markering blive ellers så skal knapper blive DISABLED, hvilket er meget fedt... :)

Thomas
Avatar billede thb Nybegynder
21. november 2002 - 20:49 #7
Er det muligt at man kan lave det som en rigtig editor, så man ikke kan se koderne, men at den på en eller anden måde kan huske dem... ???
Avatar billede edutasia Nybegynder
22. november 2002 - 10:38 #8
Hvad markering angår, er jeg ikke helt med?? I min browser (MSIE 6.0.2600.0000) bevares markeringen, når man trykker på en knap?

Du kan godt lave en "rigtig" WYSIWYG editor - men så skal du bruge en anden teknologi, som er indbygget i MSIE 5.5 og højere. Det hele går kort fortalt ud på, at man kan sætte et element, f.eks. en iframe eller en div, til at være contentEditable - og så kan brugeren redigere det online. Læs mere her - der er også et godt eksempel, du kan arbejde videre med:

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/editing/tutorials/html_editor.asp
Avatar billede thb Nybegynder
22. november 2002 - 18:32 #9
Okay kigger på linket...

Det med markeringen... jeg har samme browser, men hos mig så forsvinder markeringen, og knapperne forbliver tryk klare... den knap du har trykket på er også trykket ned...

Thomas
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