Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] blokowanie klawiatury
Forum PHP.pl > Forum > Przedszkole
wujekk13
Witam,
mam problem z funkcją "blokuj_klawisze(e)":
  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>

chodzi o to, że w polu tekstowym chciałem blokować klawisze liter, jeśli chodzi o podstawowe znaki (a, b, c, d, e, ...) to funkcja "blokuj_klawisze(e)" radzi sobie z nimi dobrze, problem pojawia się, gdy chodzi o polskie litery [czyli kombinacja klawiszy AltGr+litera (a, c, ...) = ą, ć] wtedy litera jest wprowadzana w pole tekstowe, a chodzi o to, żeby nie była. Dodatkowo chcę aby funkcjonalność innych klawiszy pozostała bez zmian. Moje pytanie brzmi co muszę zmodyfikować w funkcji "blokuj_klawisze(e)", aby osiągnąć ten efekt?
werdan
  1. function blokuj_klawisze(e) {
  2. e = e || event;
  3. var key = window.event ? e.keyCode : e.which;
  4. if key === 18 return false; //blokada ALT
  5. var keychar = String.fromCharCode(key);
  6. reg = /\d|\r|\W/;
  7. return reg.test(keychar);
  8. }
  9.  
  10.  


Blokada ALT, powinno działać biggrin.gif
wujekk13
niestety dodanie tego warunku sprawia, że funkcja przestaje działać
werdan
Nawias mi wcieło

  1. if (key === 18) return false; //blokada ALT
c1chy
Wydaje mi się że wystarczy odrzucić wszystko o keycode > 127 przynajmniej dla UTF-8 powinno to spełnić swoje zadanie
werdan
  1. function blokuj_klawisze(e) {
  2. e = e || event;
  3. var key = window.event ? e.keyCode : e.which;
  4.  
  5. var keychar = String.fromCharCode(key);
  6. reg = /\d|\r|\W/;
  7.  
  8. return (reg.test(keychar) && (key < 128));
  9.  
  10. }


Nie działa te wczesniejsze rozwiazanie z ALT.
To coś powyzej działa.
wujekk13
super, działa świetnie smile.gif
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.