login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem met drukken op button met text naar form

Offline JeroenI - 11/11/2010 23:30 (laatste wijziging 11/11/2010 23:32)
Avatar van JeroenIPHP interesse Goedenavond,

Ik heb een probleem. Ik probeer d.m.v. een button tekst in een textarea te krijgen. Om te expirimenteren heb ik het simpelste gebruikt maar ik wil uiteindelijk dat je bijvoorbeeld [.bold][./bold] (zonder puntjes dan he) hebt en dat de focus tussen die 2 komt. Maargoed om uberhaupt tekst via die button te krijgen wilde ik bij a beginnen, maar dat pakt hij niet. Ik gebruik de volgende codes:

in head:
  1. <script type="text/javascript">
  2. function add(veld,text1)
  3. {
  4. document.indexform.elements[veld].value += " "+text1+" ";
  5. document.indexform.elements[veld].focus();
  6. }
  7. </script>


Als button:

  1. <input type="button" name="bold" value="Dik" class="textfieldcolor" src="javascript:add(\'tekst\',\':)\')">


Nu vraag ik me af, wat doe ik fout? want ik kom er niet uit...

Bij voorbaat dank!

[edit]
Het form heet indexform, naam is toegewezen en de textarea heet tekst.

8 antwoorden

Gesponsorde links
Offline Sam - 11/11/2010 23:35 (laatste wijziging 11/11/2010 23:53)
Avatar van Sam PHP expert src in je input moet je vervangen door onClick:

  1. <input type="button" name="bold" value="Dik" class="textfieldcolor" onClick="add('tekst',':)')">

(Backslashes zijn niet nodig, je gebruikt single quotes binnen double quotes, "javascript:" is ook niet nodig)
Bedankt door: JeroenI
Offline Kevin - 11/11/2010 23:53
Avatar van Kevin Crew Ajax/REST Nou als je je input veld een ID zou geven dan kan je simpelweg dit gebruiken:

  1. function add(veld,text1) {
  2. var tmp = document.getElementById(veld);
  3. tmp.value = tmp.value +" "+text1+" ";
  4. tmp.focus();
  5. }
Bedankt door: JeroenI
Offline JeroenI - 12/11/2010 00:03
Avatar van JeroenI PHP interesse en hoe zou ik hem dan kunnen focussen tussen a en b? (stel dat ik bij drukken a en b krijg)
Offline Sam - 12/11/2010 00:19
Avatar van Sam PHP expert Een beetje googlen leverde mij deze code op:

  1. function setSelectionRange(input, selectionStart, selectionEnd) {
  2. if (input.setSelectionRange) {
  3. input.focus();
  4. input.setSelectionRange(selectionStart, selectionEnd);
  5. }
  6. else if (input.createTextRange) {
  7. var range = input.createTextRange();
  8. range.collapse(true);
  9. range.moveEnd('character', selectionEnd);
  10. range.moveStart('character', selectionStart);
  11. range.select();
  12. }
  13. }
  14.  
  15. function setCaretToPos (input, pos) {
  16. setSelectionRange(input, pos, pos);
  17. }

input is de ID van je textarea, dus moet je die een ID geven, pos is de positie waar je je cursor wilt hebben. Er bestaan manieren een de cursor na een bepaald woord te zetten, maar daarvoor verwijs ik je graag door naar onze goede vriend Google
Offline JeroenI - 12/11/2010 08:22
Avatar van JeroenI PHP interesse waar google je dan zoal op, want ik zou mijngod niet weten waar ik op zou moeten googlen.
Offline Sam - 12/11/2010 16:13 (laatste wijziging 12/11/2010 16:14)
Avatar van Sam PHP expert set textarea cursor position?
Offline Kevin - 13/11/2010 16:44
Avatar van Kevin Crew Ajax/REST Nou om zoiets te bekomen als resultaat in zijn geheel zou ik de hele boel met Regular Expressions schrijven.
Enkel is dit niet een gemakkelijk iets.

Als je het zo zou doen, check dan best even deze uitleg http://www.w3sc...regexp.asp
Offline JeroenI - 14/11/2010 10:26 (laatste wijziging 14/11/2010 10:26)
Avatar van JeroenI PHP interesse Ik heb inmiddels een code gevonden met 99% succes. Onderstaande code gebruik ik:

  1. <script type="text/javascript">
  2. function tag(veld, tag1, tag2)
  3. {
  4. if (!tag2)
  5. {
  6. tag2 = tag1;
  7. }
  8.  
  9. if (document.selection)
  10. {
  11. veld.focus();
  12. var selection = document.selection.createRange();
  13.  
  14. if(selection.text)
  15. {
  16. selection.text = "["+tag1+"]"+selection.text+"[/"+tag2+"]";
  17. }
  18. else
  19. {
  20. veld.value += "["+tag1+"] [/"+tag2+"]";
  21. }
  22. }
  23. else if (veld.selectionStart || veld.selectionStart == '0')
  24. {
  25. var startPos = veld.selectionStart;
  26. var endPos = veld.selectionEnd;
  27.  
  28. if (startPos != endPos)
  29. {
  30. veld.value = veld.value.substring(0, startPos)
  31. + "["+tag1+"]"
  32. + veld.value.substring(startPos, endPos)
  33. + "[/"+tag2+"]"
  34. + veld.value.substring(endPos, veld.value.length);
  35. }
  36. else
  37. {
  38. veld.value = veld.value.substring(0, startPos)
  39. + "["+tag1+"] [/"+tag2+"]"
  40. + veld.value.substring(endPos, veld.value.length);
  41. }
  42. }
  43. }
  44. </script>


Maar hoe krijg ik nu de focus tussen tag1 en tag2 na het drukken erop ?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s