Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] pamiętaj położenie kursora (karetki)
Forum PHP.pl > Forum > Przedszkole
wujekk13
Witam,
kolejny problem, który napotkałem odnosi się do funkcji "d(x)":

  1. <!doctype html>
  2. <html lang="pl" dir="ltr">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. </head>
  5.  
  6. <script language="JavaScript">
  7.  
  8. function blokuj_klawisze(e) {
  9. e = e || event;
  10. var key = window.event ? e.keyCode : e.which;
  11. var keychar = String.fromCharCode(key);
  12. reg = /\d|\r|\W/;
  13. return reg.test(keychar);
  14. }
  15. </script>
  16. <input id=litera01 type=button onclick=d(this.value); value=&#1072;>
  17.  
  18. <input id=litera02 type=button onclick=d(this.value); value=&#1073;>
  19.  
  20. <input id=litera03 type=button onclick=d(this.value); value=&#1074;>
  21.  
  22. <input id=litera04 type=button onclick=d(this.value); value=&#1075;>
  23.  
  24. <input id=litera05 type=button onclick=d(this.value); value=&#1076;>
  25.  
  26. <input id=litera06 type=button onclick=d(this.value); value=&#1077;>
  27. <input id=litera07 type=button onclick=d(this.value); value=&#1105;>
  28. <input id=litera08 type=button onclick=d(this.value); value=&#1078;>
  29.  
  30. <input id=litera09 type=button onclick=d(this.value); value=&#1079;>
  31.  
  32. <input id=litera10 type=button onclick=d(this.value); value=&#1080;>
  33.  
  34. <input id=litera11 type=button onclick=d(this.value); value=&#1081;>
  35.  
  36. <input id=litera12 type=button onclick=d(this.value); value=&#1082;>
  37.  
  38. <input id=litera13 type=button onclick=d(this.value); value=&#1083;>
  39.  
  40. <input id=litera14 type=button onclick=d(this.value); value=&#1084;>
  41.  
  42. <input id=litera15 type=button onclick=d(this.value); value=&#1085;>
  43.  
  44. <input id=litera16 type=button onclick=d(this.value); value=&#1086;>
  45.  
  46. <input id=litera17 type=button onclick=d(this.value); value=&#1087;>
  47.  
  48. <input id=litera18 type=button onclick=d(this.value); value=&#1088;>
  49.  
  50. <input id=litera19 type=button onclick=d(this.value); value=&#1089;>
  51.  
  52. <input id=litera20 type=button onclick=d(this.value); value=&#1090;>
  53.  
  54. <input id=litera21 type=button onclick=d(this.value); value=&#1091;>
  55.  
  56. <input id=litera22 type=button onclick=d(this.value); value=&#1092;>
  57.  
  58. <input id=litera23 type=button onclick=d(this.value); value=&#1093;>
  59.  
  60. <input id=litera24 type=button onclick=d(this.value); value=&#1094;>
  61.  
  62. <input id=litera25 type=button onclick=d(this.value); value=&#1095;>
  63.  
  64. <input id=litera26 type=button onclick=d(this.value); value=&#1096;>
  65.  
  66. <input id=litera27 type=button onclick=d(this.value); value=&#1097;>
  67.  
  68. <input id=litera28 type=button onclick=d(this.value); value=&#1098;>
  69.  
  70. <input id=litera29 type=button onclick=d(this.value); value=&#1099;>
  71.  
  72. <input id=litera30 type=button onclick=d(this.value); value=&#1100;>
  73.  
  74. <input id=litera31 type=button onclick=d(this.value); value=&#1101;>
  75.  
  76. <input id=litera32 type=button onclick=d(this.value); value=&#1102;>
  77.  
  78. <input id=litera33 type=button onclick=d(this.value); value=&#1103;>
  79.  
  80. <form action="" method="get">
  81.  
  82. <input id=txt type="text" name="wyszukiwarka" onkeypress='return blokuj_klawisze(event)'/>
  83.  
  84. <input type="submit" name="oursubmit" value="Szukaj" />
  85.  
  86. </form>
  87. <script language="JavaScript">
  88.  
  89. function d(x){
  90. document.getElementById("txt").focus();
  91.  
  92. poczatek=document.getElementById("txt").selectionStart; koniec=document.getElementById("txt").selectionEnd;
  93.  
  94. przedzaznaczonym=document.getElementById("txt").value.substring(0,poczatek);
  95.  
  96. zaznaczone=document.getElementById("txt").value.substring(poczatek,koniec);
  97.  
  98. pozaznaczonym=document.getElementById("txt").value.substring(koniec,document.getElementById("txt").value.length);
  99.  
  100. document.getElementById("txt").value=przedzaznaczonym+x+pozaznaczonym;
  101.  
  102. }
  103.  
  104. </script>
  105. </body>
  106.  
  107. </html>
  108.  


funkcja jest odpowiedzialna za wstawianie wybranych znaków, przypisanych do konkretnych przycisków, w pole tekstowe. Jednak gdy popełnię błąd i chcę uzupełnić słowo o brakujące litery, to w miejscu, w którym chcę go wstawić ustawiam kursor uzupełniam o jeden znak, a gdy brakuje dwóch liter muszę ponownie ustawiać kursor w odpowiednim miejscu, ponieważ automatycznie powędrował już na koniec linii. Jak go zmusić by po wpisaniu znaku kursor znajdował się za tym nowo wprowadzonym znakiem, a swoje położenie zmieniał dopiero gdy go przestawię?
werdan
Tu masz przykład o pozycji kursora, mozesz sobie podejrzec kod.

http://javascript.nwbox.com/cursor_position/

Wydaje mi się ze musisz trzymac gdzies pozycje przed dodaniem znaku i zakodowac sobie taka funkcje.
wujekk13
znalazłem w sieci rozwiązanie (nie pamiętam strony), dla funkcji d(x):

  1. function d(x){
  2. var start=document.getElementById("txt").selectionStart;
  3. var end=document.getElementById("txt").selectionEnd;
  4. document.getElementById("txt").value=document.getElementById("txt").value.substring(0, start)+x+document.getElementById("txt").value.substr(end); // dodajemy tekst w miejscu kursora
  5. document.getElementById("txt").selectionStart=document.getElementById("txt").selectionEnd=start+x.length; // ustawiamy kursor w odpowiednim miejscu
  6. }

wszystko działa tak jak chciałem
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.