anoniem Geplaatst: 11 februari 2004 Delen Geplaatst: 11 februari 2004 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 Quote Link naar reactie
anoniem Geplaatst: 11 februari 2004 Auteur Delen Geplaatst: 11 februari 2004 Ik heb ooit een dit gemaakt, misschien kun je er iets mee: http://home.hccnet.nl/m.wargers/test/bb/bb.htm http://home.hccnet.nl/m.wargers/test/bb/ Het is oorspronkelijk gebaseerd op crisp z'n script: http://www.codebase.nl/index.php/command/viewcode/id/189 Daar heeft die van jou ook wel wat van weg geloof ik. Quote Link naar reactie
anoniem Geplaatst: 11 februari 2004 Auteur Delen Geplaatst: 11 februari 2004 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? Quote Link naar reactie
anoniem Geplaatst: 11 februari 2004 Auteur Delen Geplaatst: 11 februari 2004 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. Quote Link naar reactie
anoniem Geplaatst: 11 februari 2004 Auteur Delen Geplaatst: 11 februari 2004 [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... Quote Link naar reactie
anoniem Geplaatst: 11 februari 2004 Auteur Delen Geplaatst: 11 februari 2004 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. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen