Avatar billede hmmhelpinghmm Nybegynder
11. juli 2004 - 23:12 Der er 44 kommentarer og
1 løsning

Indsætte smiley rigtige sted fra nyt vindue?

Jeg har mit mailsystem med smileys i, jeg vil gerne have man kan vælge flere smileys via et vindue, det virker også fint, men ligesom sidst med normal, så sættes alle dem man trykker på ind efter al teksten i boksen, selvom curseren står inde midt i teksten!

Prøv selv: www.friendscommunity.1go.dk/login.php
bruger og kode er begge to = test


her er koden i vinduet
i går ind på ny besked når i er logget ind, og så under besked, står der chat, bare lige skrevet forkert men i skal trykke der, spørg hvis i ikke forstår mit spg


<script type="text/javascript">
    <!--
function nysmil(text) {
    text = ' ' + text + ' ';
    if (opener.document.hh.besked.createTextRange && opener.document.hh.besked.caretPos) {
        var caretPos = opener.document.hh.besked.caretPos;
        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
        opener.document.hh.besked.focus();
    } else {
    opener.document.hh.besked.value  += text;
    opener.document.hh.besked.focus();
    }
}
    //-->
    </script>
Avatar billede 3xm Nybegynder
11. juli 2004 - 23:23 #1
det er vistnok noget med at det kun virker i ie.

...hænger på for at se om andre har en løsning på det.

=)
Avatar billede hmmhelpinghmm Nybegynder
11. juli 2004 - 23:25 #2
jeg har internet explorer!
Avatar billede hmmhelpinghmm Nybegynder
11. juli 2004 - 23:34 #3
det må gerne være i explorer!
Avatar billede hmmhelpinghmm Nybegynder
11. juli 2004 - 23:44 #4
3xm, ved du hvordan eller ved bare man kan?

på 1go kan man

www.1go.dk/forum2003

vælg php/mysql
vælg nyt emne

så kan du det med flere smileys!
Avatar billede hmmhelpinghmm Nybegynder
11. juli 2004 - 23:56 #5
kan man ikke sådan noget med at kører functionen insertText på åbner vinduet med sådan noget?

function insertText(frmElm,text) {
    opener.document.functioninsertText(frmElm,text);
    }

det der virker ikke, men noget i den retning, HJÆLP!
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 00:16 #6
er det herover muligt på nogen måde, hvordan?
Avatar billede skovenborg Nybegynder
12. juli 2004 - 00:20 #7
jo, der er en mulighed for at det både virker i IE og Mozilla:

Dette skal sættes ind i popup-vinduet:
<script type="text/javascript">
    <!--
function nysmil(text) {
    frmElm = opener.document.hh.besked;
    if (typeof opener.cursorpos == "number") {

        frmElm.value = frmElm.value.substring(0,frmElm.selectionStart)+text+frmElm.value.substring(frmElm.selectionEnd);
        } // For mozilla
        else if (opener.document.selection) {r = opener.document.selection.createRange();
            if (r.parentElement().type == "textarea") {r.text = text;}
            else {frmElm.value += text;}
        } // For IE
        else frmElm.value += text;
}


    //-->
    </script>

og dette skal ændres i din lavbesked.php:
<textarea name="besked" cols="40" rows="10" onfocus="fokus = true;cursorpos = this.selectionStart" onblur="fokus = false;"></textarea>
Avatar billede skovenborg Nybegynder
12. juli 2004 - 00:21 #8
og forresten så kan det være du lige skal rette den her - fandt jeg lige ud af i sidste spørgsmål at IE5 ikke kan klare den syntax:
function insertTag(frmElm,startTag,endTag) {
      if (typeof frmElm.selectionStart == "number" && typeof frmElm.selectionEnd == "number") {
            selectedtext = startTag+frmElm.value.substring(frmElm.selectionStart,frmElm.selectionEnd)+endTag;
            frmElm.value = frmElm.value.substring(0,frmElm.selectionStart)+selectedtext+frmElm.value.substr(frmElm.selectionEnd);
      }
      else if (document.selection) {frmElm.focus();r = document.selection.createRange();r.text = startTag+r.text+endTag;}
      else frmElm.value += startTag+endTag;
}
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 00:35 #9
af hensyn til brugervenlighed, hvad er så bedst
at lade vinduet stå, minimere det eller luker det?
Avatar billede skovenborg Nybegynder
12. juli 2004 - 00:46 #10
du kan ikke minimere det - så jeg vil nok lukke det i stedet.
Altså:
function nysmil(text) {
    frmElm = opener.document.hh.besked;
    if (typeof opener.cursorpos == "number") {

        frmElm.value = frmElm.value.substring(0,frmElm.selectionStart)+text+frmElm.value.substring(frmElm.selectionEnd);
        } // For mozilla
        else if (opener.document.selection) {r = opener.document.selection.createRange();
            if (r.parentElement().type == "textarea") {r.text = text;}
            else {frmElm.value += text;}
        } // For IE
        else frmElm.value += text;
        self.close(),
}
Avatar billede skovenborg Nybegynder
12. juli 2004 - 00:46 #11
self.close();
skulle det være ;-)
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 00:47 #12
ja det ved jeg, men hvad er mest brugervenligt!?
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 00:51 #13
og så en ting mere, når jeg skal bruge de smileys, så sætter jeg curseren der hvor den smiley skal være, vælger linket flere smileys, og vælger en af dem, så sker der det, at den som før bliver indsat bag al teksten, jeg skal mens vinduet med smileys er åbent, markere med curseren, og derefter indsætte, så kommer den rigtigt ind!

Prøv selv ved hjælp af linket i toppen bruger og kode er test

vælg ny besked, så prøv!

Kan det laves om, eller er det ikke muligt?
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 00:53 #14
og til sidst, er det mere brugervenligt at lave det som et pop up når man går ind på ny besked? hvordan laver man pop ups?
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:03 #15
er du der stadig, eller skal jeg komme igen i morgen, går nemlig snart!
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:03 #16
UPS SENERE I DAG
Avatar billede skovenborg Nybegynder
12. juli 2004 - 01:07 #17
jo, jeg er her stadig - men var lige væk et øjeblik (og lidt til ;-)
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:07 #18
sidste 3 før 01:03:01
Avatar billede skovenborg Nybegynder
12. juli 2004 - 01:12 #19
jeg kan godt se problemmet i IE hvor det vist ikke virker særlig godt og skal også se om der ikke kan gøres noget ved det - men desværre kan jeg ikke lige finde en ordentlig mulighed for at aflæse hvor i textareaet cursoren sidst er sat.

Når du taler om brugervenlighed, så tænker du vel på hvad der sker når man vælger en ny smiley fra popupen. Her vil jeg mene at hvis man lukker vinduet ville det være bedst eller alternativt sætte fokusset i modervinduet. Selv hælder jeg nok mest til den første mulighed, da brugeren nok ikke har lyst til, at have det popup-vindue hængende hele tiden, hvis personen allerede har valgt en smiley.
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:14 #20
okay, det med brugevenlighed takker jeg for!

Du har forstået at det virker fint hvis man åbner vindue, sætter curser, og vælge smiley ikke?
Avatar billede skovenborg Nybegynder
12. juli 2004 - 01:15 #21
og så angående om man skal lave en popup når man vil skrive en ny besked:

Det synes jeg egentlig ikke er nødvendigt. For mange popups kan også ødelægge det hele, og desuden kan brugeren også bare vælge at åbne et link i et nyt vindue hvis han har lyst.
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:16 #22
ja okay, men hvad med det 01:14:32
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:21 #23
angående det med hvor den sidst er sat, kan man ikke med noget javascript gøre sådan, at når den skal åbne siden med smileys, så først lægger den evt. en cookie med positionen, og derefter åbner vinduet, så kan det aflæses af vinduet

HVad så når man vælger en ny position, så skal den jo fjerne cookie, det er ikke noget problem som den lukker, men hvis den alligevel ikke skal det?
kan man bare gøre det via en variabel? eller sådan noget?
Avatar billede skovenborg Nybegynder
12. juli 2004 - 01:23 #24
altså indtil videre laver den faktisk en løsning hvor den bruger en variabel - men det er kun til Mozilla. Som jeg nævnte i 12/07-2004 01:12:43 er det ikke lige så let direkte at aflæse efter hvilket bogstav cursoren er sat i IE. Det er lige det som skaber problemmet lige nu.
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:24 #25
Kigger du på det nu, eller har du ikke tid nu?
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:29 #26
Skriver lige igen hvis du ikke lagde mærke til det!
Avatar billede skovenborg Nybegynder
12. juli 2004 - 01:30 #27
jeg kigger lidt på det nu, men du kan bare smutte i seng hvis det er. Jeg kan ikke umiddelbart sige hvor længe jeg gider bøvle med det her i nat. Så kan vi tage det op i morgen (har nok tid en gang i morgen aften igen)
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:31 #28
okay så må vi se om vi træffer hinanden, så godnat, og du stopper bare når du ikke orker mere! :)
Avatar billede skovenborg Nybegynder
12. juli 2004 - 01:33 #29
selv godnat - men jeg kan ikke love det overhovedet er muligt at løse :-S
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 01:36 #30
hmm, nej nej, det virker bare underligt, du kan jo kigge lidt i kildefilerne her, da det jo virker.

11/07-2004 23:44:35
Avatar billede skovenborg Nybegynder
12. juli 2004 - 02:01 #31
en god ide' - og det viste sig også de havde en ret fin teknik til at ordne det med. Måske jeg skulle bruge en lignende til mit normale insertText script ;-)

I hvert fald kan du prøve at lave disse ændringer:
lavBesked.php:
Tilføj:
var curRange;
function storeTextRange() {
      if (document.selection) {
            curRange = document.selection.createRange().duplicate();
      }
}

og ret:
<textarea name="besked" cols="40" rows="10" onfocus="fokus = true;" onblur="fokus = false;" onclick="storeTextRange()" onkeyup="storeTextRange();"></textarea>

Og så til popuppen:

function nysmil(text) {
    frmElm = opener.document.hh.besked;
    if (typeof opener.cursorpos == "number") {

        frmElm.value = frmElm.value.substring(0,frmElm.selectionStart)+text+frmElm.value.substring(frmElm.selectionEnd);
        } // For mozilla
        else if (opener.document.selection && opener.curRange) {r = opener.curRange;
            if (r.parentElement().type == "textarea") {r.text = text;}
            else {frmElm.value += text;}
        } // For IE
        else frmElm.value += text;
}

Så burde det virke bedre.
Avatar billede skovenborg Nybegynder
12. juli 2004 - 02:02 #32
og så er det vist på tide for mig at gå i seng også ;-)
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 12:03 #33
Jo det virker stort set, der erlige en ting, om du kunne ordne det?

prøv at logge ind og gå indpå ny besked.

Når du direkte indsætter smiley, så bliver curseren sat synligt når man sætter en ind, hvis du bruger vinduet så forsvinder curseren, og når du lukker vinduet og så indsætter en smiley direkte igen, bliver den indsat bagerst, er der en måde og ændre det på?
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 12:10 #34
nå fandt jeg selv ud af, indsatte bare:

frmElm.focus();

altså:

function nysmil(text) {
    frmElm = opener.document.hh.besked;
    if (typeof opener.cursorpos == "number") {

        frmElm.value = frmElm.value.substring(0,frmElm.selectionStart)+text+frmElm.value.substring(frmElm.selectionEnd);
        } // For mozilla
        else if (opener.document.selection && opener.curRange) {r = opener.curRange;
            if (r.parentElement().type == "textarea") {r.text = text;}
            else {frmElm.value += text;}
        } // For IE
        else frmElm.value += text;
        frmElm.focus();
}
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 12:11 #35
Du har virkelig fortjent pointene, mange mange tusind tak for hjælpen!!!

:)

Smid et svar!
Avatar billede skovenborg Nybegynder
12. juli 2004 - 13:22 #36
værsgo' - og tak fordi du kunne finde et par bugs i den funktion, som jeg havde lavet. Dem vil jeg lige se at få rettet :-)
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 13:39 #37
Jeg har en ting til hvis det er noget du nemt kan!

JEg har lavet sådan at når man sender mailen så poster den til næste side, der så inden den sender, tjekker om brugeren findes, hvis ikke, melder den en alert, og går en history tilbage. Men så er felterne jo tomme, hvordan fikser jeg den?
Avatar billede skovenborg Nybegynder
12. juli 2004 - 14:36 #38
hvis browseren ikke selv har gemt de forskellige felter, så er der jo ikke meget at gøre. Ellers skulle du bruge noget PHP/ASP og så i stedet for at gå tilbage, så gå frem til den samme side, og send de forskellige informationer med. På den måde kan du så med PHP/ASP skrive de forskellige værdier ind i felterne igen.
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 15:38 #39
kan du svare mig på hvorfor den kun gemmer på nogle sider, og ikke denne!
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 16:20 #40
??????
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 16:56 #41
Hvordan sender jeg dem med når den er blevet postet til siden, hvordan kan jeg så poste dem videre?
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 17:51 #42
Jeg oprettede et nyt spørgsmål med det da dette var lukket!
Har fået svar! takker for hjælpen!
Avatar billede skovenborg Nybegynder
12. juli 2004 - 19:27 #43
undskyld jeg ikke har svaret tilbage - min mail er nede, så jeg kan ikke rigtig holde styr på om der kommer nye indlæg. Men jeg synes det vil være passende hvis du lavede et nyt spørgsmål (som du så har gjort). Kan godt se problemmet, men der skal altså andre kræfter end Javascript til at løse sådan noget... håber du får hjælp et andet sted.
Avatar billede skovenborg Nybegynder
12. juli 2004 - 19:29 #44
eller lad os bare sige jeg ikke ved det ;-) Det lyder pænere...
Avatar billede hmmhelpinghmm Nybegynder
12. juli 2004 - 19:30 #45
jo mange tak, jeg ved godt du sagde først i aften, så det er da okay!
Skal bare snart på ferie så havde lidt travlt!

Jeg brugte sessions!

Du kan se spørgsmålet poste fra side1 til side2 til side3, tror jeg den hedder!

Mange tak for hjælpen :)

Det er løst :)
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