25. juni 2003 - 16:40Der er
16 kommentarer og 2 løsninger
Insert smiley ved cursor
Jeg har lavet er tagwall hvor man kan trykke på et smiley face og så skriver den automatisk :-) i text feltet. Mit problem er at :-) altid bliver sat ind til sidst i teksten og ikke der hvor cursoren er placeret.
Ville blive utrolig glad hvis det er nogen der kan hjælpe mig med at løse dette problem.
Min kode ser sådan ud:
function smiley(smiley) { document.formular.felt.value = document.formular.felt.value + smiley }
måske du kan stille spørgsmålet dér i et af de mange fora...? Jeg har selv brugt dem meget og der er altid hjælp at hente (næsten ligesom hos eksperten.dk) :-)
->swuppe Din function virker fint i IE, men i Opera v.703 sletter du al tekst i feltet, når du indsætter en smiley, som i øvrigt kun kan indsættes én gang (ligeledes i Opera). Har ikke mulighed for at teste i flere browsere :-(
macho: Tja sådan kan det jo gå når man ikke tester tingene :o) men hvis haken skal bruge Opera eller andre browsere det ikke fungerer i, så må vi jo tage det op. Jeg er bare lidt bange for at det ikke er helt trivielt så.
->swuppe du har ret, hvis haken skal bruge funktionen i f.eks. et lukket intranet e.lign. hvor de bruge IE, er det jo ligegyldigt. I øvrigt har jeg (for sjov skyld) installeret Netscape v.7, hvor der sker det samme som i Opera (teksten forsvinder) - Det er nok en ren IE-ting...
Hej Det skal bruges på internetter og ikke på et intranet så det ville være rigtigt fedt hvis det kunne virke i andre browsere end IE. Jeg ved ikke om det er muligt at lave så det fungere til andre browsere end IE. Ellers kan man vel teste hvilken browser brugeren har og så bruge:
function smiley(smiley) { document.formular.felt.value = document.formular.felt.value + smiley }
hvis brugeren har en anden browser end IE. Ved i om der er en bedre måde man kan gøre for at bruge det til andre browsere?
Som Rønving skriver quote textRanges _er_ M$ only ... unquote
Jeg har desuden fået tjekket http://forum.snitz.com/forum/post.asp?method=Topic&FORUM_ID=107 i både Opera og Netscape. Heller ikke Snitz's funktion virker på den måde du ønsker det. Dog bliver teksten i feltet ikke slettet, når man indsætter en smiley, men smiley'en bliver bare indsat aller sidst i teksten. Jeg ved godt, at det ikke hjælper dig meget, men nu har du noget mere at holde dig til. Jeg kan ikke hjælpe mere! :-(
Jeg tror jeg har fundet grunden til at det hele forsvinder og der bare kommer et :-) Efter else står der textEl.value = text hvis der står textEl.value = textEl.value.text burde den vel sætte :-) ind bagefter og ikke slette teksten.
I IE sker der umiddelbart ikke noget ved at gøre, sådan som du foreslår, men i både Opera og Netscape bliver der skrevet "undefined" i tekst-feltet, når man klikker "insert a caret" - beklager, jeg står af her...
Jeg har nu gjort så det kun viser knappen med insert a carat hvis brugeren bruger IE ellers må man selv skrive :-) Tak for hjælpen til jeg alle. Kan i ikke smide nogle svar så jeg kan dele points ud.
Snitz's valg synes jeg er udemærket, men det er selvfølgelig et valg om hvad der er brugervenlighed og brugeropstruktion. Altså at den blot indsætter til slut i teksten hvis man ikke bruger IE....
macho: Jeg vil tro at den kode de bruger er: function insertsmilie(smilieface) { if (document.PostTopic.Message.createTextRange && document.PostTopic.Message.caretPos) { var caretPos = document.PostTopic.Message.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? smilieface + ' ' : smilieface; document.PostTopic.Message.focus(); } else { document.PostTopic.Message.value+=smilieface; document.PostTopic.Message.focus(); } } haken: god fornøjelse med det ;o)
Synes godt om
Ny brugerNybegynder
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.