Avatar billede lademan Novice
21. januar 2003 - 12:44 Der er 28 kommentarer og
2 løsninger

luxusproblemet

Hejsa.

Jeg har et problem. Kald det bare et luksusproblem.

Hvorfor markeres et ord OG det efterfølgende mellemrum, når man dobbeltklikker på det i et textarea?

Kan man på en eller anden måde lave det således at KUN ordet markeres ved dobbeltklik?
Avatar billede lademan Novice
21. januar 2003 - 12:45 #1
.
Avatar billede di8leva Nybegynder
21. januar 2003 - 12:49 #2
det kan du ikke gøra et skidt åt =(
Avatar billede lademan Novice
21. januar 2003 - 12:53 #3
Kan man se bort fra det markede mellemrum vha. javascript?
Avatar billede olebole Juniormester
21. januar 2003 - 13:38 #4
<ole>

Det er et evigt tilbagevendende MS-problem  :oP

var str = "noget tekst ";
alert( str + "og noget mere"); // Test, hvad str ender på

if ( str.charAt(str.length-1)==" " ) {
    str = str.substring( 0, str.length-1 );
    alert( str + "og noget mere"); // Test, hvad str ender på
}

/mvh
</bole>
Avatar billede olebole Juniormester
21. januar 2003 - 13:38 #5
De to alerts kan du selvfølgelig bare slette, når du har set effekten af script'et  :)
/mvh
Avatar billede lademan Novice
21. januar 2003 - 13:43 #6
tester lige banditten ;-)
Avatar billede lademan Novice
21. januar 2003 - 14:00 #7
Problemet er at den skal indpasses i dette script, der laver fed tags rundt om en selected tekst:

<SCRIPT>
<!--

cb = "";

function fed() {
    sel = document.selection.createRange();
    if (sel.text != ""){
    html = "<b>" + sel.text + "</b>";
    insertAtCaret(document.form.indhold,html);
    }
}

function storeCaret (textEl) {
    if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}

function insertAtCaret (textEl, text) {
    if (textEl.createTextRange && textEl.caretPos) {
    var caretPos = textEl.caretPos;
    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
} else textEl.value  = text;
}

//-->
</SCRIPT>
Avatar billede lademan Novice
21. januar 2003 - 14:02 #8
Denne selected tekst, var det min mening skulle køres igennem en tester, der sørger for at der ikke er mellemrum efter et ord, således at koden ser sådan ud:

<b>TEKST</b>

i stedet for

<b>TEKST </b>
Avatar billede websmith Nybegynder
21. januar 2003 - 14:06 #9
Såre simpelt.

Du putter koden:
html="<b>" +sel.text.charAt(sel.text.length-)==' '?sel.text.substring(1):sel.text+"</b>";

istedet for din egen: html = "<b>" + sel.text + "</b>";

Skulle meget gerne virke :)
Avatar billede websmith Nybegynder
21. januar 2003 - 14:07 #10
damn, min fejl :)
Det skulle jo have været:
html="<b>" +sel.text.charAt(sel.text.length-)==' '?sel.text.substring( 0, sel.text.length-1 ):sel.text+"</b>";
Avatar billede lademan Novice
21. januar 2003 - 14:09 #11
Det virker ikke ;)
Avatar billede websmith Nybegynder
21. januar 2003 - 14:09 #12
i funktionen fed :)
Avatar billede lademan Novice
21. januar 2003 - 14:10 #13
har prøvet ;)
Avatar billede olebole Juniormester
21. januar 2003 - 14:11 #14
function fed() {
    sel = document.selection.createRange();
    var shortened = false;
    if (sel.text != "") {
        if ( sel.text.charAt(sel.text.length-1)==" " ) {
            sel.text = sel.text.substring( 0, sel.text.length-1 );
            shortened = true;
        }
        html = "<b>" + sel.text + "</b>";
        if ( shortened ) html += " ";
        insertAtCaret(document.form.indhold,html);
    }
}
Avatar billede websmith Nybegynder
21. januar 2003 - 14:13 #15
Der manglede et 1 :)

Dvs.
html="<b>" +sel.text.charAt(sel.text.length-1)==' '?sel.text.substring( 0, sel.text.length-1 ):sel.text+"</b>";
Avatar billede olebole Juniormester
21. januar 2003 - 14:14 #16
Generelt: Når ting ikke fungerer, som du gerne vil have dem til, er den mindst fornuftige kommentar: "Det virker ikke".
Det er noget smartere at skrive, hvordan det gerne skulle virke - og hvordan det reelt virker.
Det gør arbejdet med at rette koden til meget lettere  ;o)
/mvh
Avatar billede lademan Novice
21. januar 2003 - 14:15 #17
>>olebole

resulat:

TEKST TEKST

->

<b></b> TEKSTTEKST
Avatar billede lademan Novice
21. januar 2003 - 14:18 #18
>> websmith

resultat:

TEKST

->

TEKST </b>
Avatar billede olebole Juniormester
21. januar 2003 - 14:20 #19
Så må vi se en URL til siden
Avatar billede websmith Nybegynder
21. januar 2003 - 14:24 #20
Prøv med dette, men jeg tror også at du inserAtCaret funktion på en eller anden måde laver ged :)

html="<b>"
html+=sel.text.charAt(sel.text.length-1)==' '? sel.text.substring( 0, sel.text.length-1 ) : sel.text
html+="</b>";
Avatar billede lademan Novice
21. januar 2003 - 14:24 #21
Den er bag admin, men her er koden:

<SCRIPT>
<!--

cb = "";

function kursiv() {
    sel = document.selection.createRange();
    if (sel.text != ""){
    html = "<i>" + sel.text + "</i>";
    insertAtCaret(document.form.indhold,html);
    }
}

function fed() {
    sel = document.selection.createRange();
    if (sel.text != ""){
    html = "<b>" + sel.text + "</b>";
    insertAtCaret(document.form.indhold,html);
    }
}

function link() {
    sel = document.selection.createRange();
    if (sel.text != "") hr = prompt("LINKADRESSE:","http://www."); //Du kan skifte "http://" ud med sel.text hvis adressen automatisk skal være den markerede indhold!
    else hr = "";
    if (hr != "http://www." && hr != "" && hr != null && sel.text != ""){
    html = "<a href=\"" + hr + "\" target=\"_blank\">" + sel.text + "</a>";
    insertAtCaret(document.form.indhold,html);
    }
}

function storeCaret (textEl) {
    if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}

function insertAtCaret (textEl, text) {
    if (textEl.createTextRange && textEl.caretPos) {
    var caretPos = textEl.caretPos;
    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
} else textEl.value  = text;
}

//-->
</SCRIPT>

<?php
print "
<form method=\"post\" name=\"form\" action=\"admin_univers.php?action=opdater\">
<input type=\"button\" value=\"Fed\" onClick=\"fed();\" style=\"font-weight: bold; font-size: 9px;\" title=\"Markér tekst, som du vil lave fed, og tryk her\">
<input type=\"button\" value=\"Kursiv\" onClick=\"kursiv();\" style=\"font-style: italic; font-size: 9px;\" title=\"Markér tekst, som du vil lave kursiv, og tryk her\">
<input type=\"button\" value=\"Link\" onClick=\"link();\" style=\"font-size: 9px;\" title=\"Markér tekst, som du vil lave til et link, og tryk her\">
<textarea name=\"indhold\" onSelect=\"storeCaret(this);\" onClick=\"storeCaret(this);\" onKeyUp=\"storeCaret(this);\" cols=\"90\" rows=\"30\" style=\"font-family:Tahoma,arial; font-size=11px\">$row[indhold]</textarea>    </td>
</form>
";
?>
Avatar billede websmith Nybegynder
21. januar 2003 - 14:25 #22
html="<b>";
html+=sel.text.charAt(sel.text.length-1)==' '? sel.text.substring( 0, sel.text.length-1 ) : sel.text;
html+="</b>";

Havde lige glemt nogle ;;
Avatar billede websmith Nybegynder
21. januar 2003 - 14:26 #23
Jeg har testet nu, og nu fungerer det endeligt. Det er godt nok pinligt :)
Avatar billede lademan Novice
21. januar 2003 - 14:27 #24
>> websmith


Det er den rigtige løsning!!
Avatar billede lademan Novice
21. januar 2003 - 14:27 #25
Kanon! ;)
Avatar billede websmith Nybegynder
21. januar 2003 - 14:32 #26
Jeg vil nu nok forslå dig at du laver en function til det, dvs.

function stripTrailingSpace(str)
{
return str.charAt(str.length-1)==' '? str.substring( 0, str.length-1 ) :str;

}

Du bruger den jo flere steder.
Avatar billede lademan Novice
21. januar 2003 - 14:39 #27
Det magter jeg ikke. Mange tak for hjælpen!!
Avatar billede lademan Novice
21. januar 2003 - 14:53 #28
Tror i scriptet virker i andre browsere end explorer?
Avatar billede olebole Juniormester
21. januar 2003 - 14:59 #29
Det er JScript, så det kan jeg garantere, det ikke gør  ;o)
Avatar billede lademan Novice
21. januar 2003 - 14:59 #30
Kanon ;-)
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