Ga naar inhoud

Smilies invoegen in meerdere textarea's


anoniem

Aanbevolen berichten

Het probleem is als volgt: Ik gebruik een CMS, waarin de formulieren automatisch worden gegenereerd. Nu kan ik dmv een extra modules, extra funxtionaliteit aan de textarea's geven. Dit wil ik doen in de vorm van het toevoegen van smilies dmv een click. Nu heb ik onderstaand script: ubb-script.js: [code:1:6328e2152c] function getTarget(el) { target = (document.getElementById)? document.getElementById(el): 0; } function storeCursor(el) { if (document.all && el.createTextRange) el.cursorPos = document.selection.createRange().duplicate(); } function putStr(text) { if (target) { if (document.all && target.cursorPos) { target.cursorPos.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(); storeCursor(target); } }[/code:1:6328e2152c] En de volgende HTML: [code:1:6328e2152c] <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="ubb-script.js"></script> </head> <body> <textarea id="content" name="content" rows="9" cols="45" style="width: 384px; height: 150px" onfocus="getTarget('content')" onselect="storeCursor(this)" onkeyup="storeCursor(this)" onclick="storeCursor(this)"></textarea><br /> <a href="javascript://" onclick="putStr(' :) ');return false"><img src="afbeeldingen/grijnzen.gif" width="20" height="20" border="0" alt="" /></a><br /> <a href="javascript://" onclick="putStr(' :( ');return false"><img src="afbeeldingen/boos.gif" width="20" height="20" border="0" alt="" /></a><br /> <a href="javascript://" onclick="putStr(' ;) ');return false"><img src="afbeeldingen/knipoog.gif" width="20" height="20" border="0" alt="" /></a><br /> <a href="javascript://" onclick="putStr(' :P ');return false"><img src="afbeeldingen/spotten.gif" width="20" height="20" border="0" alt="" /></a><br /> </body> </html>[/code:1:6328e2152c] Dit werkt perfect! Maar, nu moet het toepasbaar zijn op een pagina met meerdere textarea's met verschillende names & id's. Kan iemand mij vertellen hoe ik dit aan moet pakken? Ik heb van alles geprobeerd maar kom er maar niet uit! Alvast bedankt! :D
Link naar reactie
Bedankt mw22, maar daar kan ik niets mee.. Jouw textarea's staan in een div 'textarea' waardoor ze getriggered worden.. Dat kan ik helaas niet doen... :( Ik moet de javascript code veranderen zodat het gekoppeld wordt aan elke id/name van een textarea. (De smileys/ubb-balk wordt overigens onder elke textarea afzonderlijk weergegeven) Ik denk dat het iets met deze functie te maken heeft: [code:1:a21d147344] function getTarget(el) { target = (document.getElementById)? document.getElementById(el): 0; }[/code:1:a21d147344] Of zit ik er helemaal naast?
Link naar reactie
Klopt, elke textarea heeft een onfocus attribuut/event handler die ervoor zorgt dat dit de 'actieve' textarea wordt. [code:1:8d6a9b9cc9] <textarea id="content" name="content" rows="9" cols="45" style="width: 384px; height: 150px" onfocus="getTarget('content')" [/code:1:8d6a9b9cc9] Dus voor elke textarea moet je een nieuw uniek id gebruiken en de onfocus aanpassen aan de hand van die unieke id.
Link naar reactie
[quote:e7f6475558]Dus voor elke textarea moet je een nieuw uniek id gebruiken en de onfocus aanpassen aan de hand van die unieke id.[/quote:e7f6475558] Precies! Maar, stel nou dat ik meerdere textarea's heb. Die worden geladen en dan wordt op elke textarea gefocust. Volgens mij kan dat niet.. Wat ik wil, is dat elke groep smileys wordt gekoppeld aan de daarboven aanwezige textarea. Dus, wanneer ik klik op een smiley onder textarea 1 komt ie ook alleen in textarea 1. En wanneer ik dan klik op een smiley onder textarea 2, word ie enkel ingevoegd in textarea 2. Het voordeel hiervan is, is dat wanneer ik op een smiley klik zonder dat de textarea getriggered is, ik de focus op de desbetreffende textarea kan zetten. Het probleem is echter, hoe doe ik dat...
Link naar reactie
Waarom geef je de target niet mee aan de putStr() functie? Dat lijkt mij het meest logisch. Bijv: [code:1:0f04a2e8f5] <script type="text/javascript" > function getTarget(el) { return (document.getElementById)? document.getElementById(el): 0; } function storeCursor(el) { if (document.all && el.createTextRange) el.cursorPos = document.selection.createRange().duplicate(); } function putStr(text, textarea) { target = getTarget(textarea); if (target) { if (document.all && target.cursorPos) { target.cursorPos.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(); storeCursor(target); } } </script> <textarea id="content" name="content" onselect="storeCursor(this)" onkeyup="storeCursor(this)" onclick="storeCursor(this)"></textarea> <br /> <a onclick="putStr(' :) ', 'content');return false"><img ... /></a> [/code:1:0f04a2e8f5] p.s. Het is dan niet meer nodig om [i:0f04a2e8f5]onfocus[/i:0f04a2e8f5] van de textarea de target te setten. p.s.2 Ik heb de getTarget() functie aangepast zodat deze een waarde retourneerd, dat is wat netter dan het setten van een globale variabele.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...