Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS]zmiana pewnej funkcji
Forum PHP.pl > Forum > Przedszkole
pikornecki
Witam, znalazłem na forum taki oto temacik:

klik

Jest tam przedstawiona bardzo fajna funkcja:
[JAVASCRIPT] pobierz, plaintext
  1. function insertAtCursor(myField, myValue) {
  2. //IE support
  3. if (document.selection) {
  4. myField.focus();
  5. sel = document.selection.createRange();
  6. sel.text = myValue;
  7. }
  8. //MOZILLA/NETSCAPE support
  9. else if (myField.selectionStart || myField.selectionStart == '0') {
  10. var startPos = myField.selectionStart;
  11. var endPos = myField.selectionEnd;
  12. myField.value = myField.value.substring(0, startPos)
  13. + myValue
  14. + myField.value.substring(endPos, myField.value.length);
  15. } else {
  16. myField.value += myValue;
  17. }
  18. }
[JAVASCRIPT] pobierz, plaintext


przydatna i to bardzo nie powiem, niemniej jednak ma dla mnie jedną wadę otóż, po wstawieniu jakiegoś tekstu kursor zostaje w miejscu, dla przykładu:

wpisuję wyraz 1 i wypisuje mi:

wyraz1

wpisuję wyraz 2 i wypisuje mi:

wyraz2 wyraz1

a ja chciałbym żeby wypisał mi:

wyraz1 wyraz2

reasumując, jak zmienić tą funkcję żeby najpierw wpisało mi wyraz w miejscu kursora a później kursor automatycznie przesunął się za ten wyraz?
kamil4u
Nie do końca rozumiem... - opisz dokładniej.
Niemniej musisz:
1) wiedzieć ile znaków ma dodawany ciąg
2) znać aktualną pozycję kursora
3) ustalić nową pozycję dla tego kursora( dodając czy tam odejmując od aktualnej pozycji ilość znaków)

i teraz dla

1) string length
2) i 3) http://blog.vishalon.net/index.php/javascr...on-in-textarea/ -> niżej masz link do przykładu
pikornecki
dobra to w chwili obecnej urządzi mnie inne rozwiązanie: jak po wstawieniu dowolnego tekstu w textarea w dowolnym miejscu ustawić się na samym końcu tak jak to jest w tym edytorze na forum?
kamil4u
Tak samo smile.gif - liczysz ilość znaków, a następnie zmieniasz pozycję kursora. Prowizoryczny, ale działający kod:
[JAVASCRIPT] pobierz, plaintext
  1. <textarea id="test">123</textarea>
  2.  
  3. <input type="button" value="na koniec" onclick="test();">
  4. <script>
  5. function test(){
  6. el = document.getElementById('test');
  7. ilosc_znakow = el.value.length;
  8. setCaretPosition( el, ilosc_znakow);
  9. }
  10.  
  11. function setCaretPosition(ctrl, pos){
  12. if(ctrl.setSelectionRange)
  13. {
  14. ctrl.focus();
  15. ctrl.setSelectionRange(pos,pos);
  16. }
  17. else if (ctrl.createTextRange) {
  18. var range = ctrl.createTextRange();
  19. range.collapse(true);
  20. range.moveEnd('character', pos);
  21. range.moveStart('character', pos);
  22. range.select();
  23. }
  24. }
  25. </script>
[JAVASCRIPT] pobierz, plaintext


--edit--
Myślisz, że jak zrobisz śmietnik na forum zakładając 3 tematy na ten sam temat to ktoś Ci szybciej pomoże czy jak?
pikornecki
ok działa:P reasumując funkcja która wstawi jakikolwiek znak w dowolne miejsce textarea a później przeniesie sie na koniec będzie wyglądała następująco:
[JAVASCRIPT] pobierz, plaintext
  1. function insertAtCursor(myField, myValue) {
  2. //IE support
  3. if (document.selection) {
  4. myField.focus();
  5. sel = document.selection.createRange();
  6. sel.text = myValue;
  7. }
  8. //MOZILLA/NETSCAPE support
  9. else if (myField.selectionStart || myField.selectionStart == '0') {
  10. var startPos = myField.selectionStart;
  11. var endPos = myField.selectionEnd;
  12. myField.value = myField.value.substring(0, startPos)
  13. + myValue
  14. + myField.value.substring(endPos, myField.value.length);
  15. } else {
  16. myField.value += myValue;
  17. }
  18. el = myField;
  19. ilosc_znakow = el.value.length;
  20.  
  21. if(el.setSelectionRange)
  22. {
  23. el.focus();
  24. el.setSelectionRange(ilosc_znakow,ilosc_znakow);
  25. }
  26. else if (el.createTextRange) {
  27. var range = el.createTextRange();
  28. range.collapse(true);
  29. range.moveEnd('character', ilosc_znakow);
  30. range.moveStart('character', ilosc_znakow);
  31. range.select();
  32. }
  33. }
[JAVASCRIPT] pobierz, plaintext
Ociu
Zacznijcie używać odpowiednich tagów do kolorowania składni. Jeżeli nie, temat będzie zamknięty.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.