Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Tablica i generowanie
dezerter_af
post 14.06.2012, 15:02:08
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 1.04.2011

Ostrzeżenie: (0%)
-----


Witam,

Dzięki pomocy użytkownikom i dzięki internetowi mam pewien kawałek kodu. Z JS nigdy nie miałem styczności, tylko wiem jak go wstawić na stronę smile.gif Mam dwie tablice (gdzieś przeczytałem, że można tak zrobić). Chcę aby text wprowadzony w input id "nazwa" był rozbijany na znaki i kodowany wg tablica2.

  1. <input type="text" id="nazwa" onKeyUp="symbole();">
  2. <input type="text" id="symbol" readonly="readonly">
  3. <script type="text/javascript">
  4. function symbole() {
  5. var tablica = [];
  6. var tablica1 = new Array('a','ą','b','c','ć','d','e','ę','f','g','h','i','j','k','l','ł','m','n','ń','o','ó','p','q','r','s','ś','t','u','v','w','x','y','z','ź','ż');
  7. var tablica2 = new Array('a1','a2','b3','c4','c5','d6','e7','e8','f9','g1','h2','i3','j4','k5','l6','l7','m8','n9','n1','o2','o3','p4','q5','r6','s7','s8','t9','u1','v2','w3','x4','y5','z6','z7','z8');
  8. tablica array ["a, b, c"] = array "1, 2, 3";
  9. tablica["qq"] = "symbol 2";
  10. tablica["foo"] = "symbol trzeci";
  11. nazwa = document.getElementById("nazwa");
  12. symbol = document.getElementById("symbol");
  13. symbol.value = tablica[nazwa.value] !== undefined ? tablica[nazwa.value] : "";
  14. }


Pozdrawiam,
Sergiusz Kotecki

W zasadzie to wpadłem na nowy trop czyli str.replace.
Ale tak jak mówiłem nigdy nie miałem styczności z JS i już po prostu wariuje bo nie wiem jak mam to zrobić. Czyli wpisuje w jeden input tekst a on jest zamieniany na kod. Czyli tak jak wg. poniższego skryptu.

Bardzo proszę o pomoc.

  1. <input type="text" id="nazwa" onKeyUp="symbole();">
  2. <input type="text" id="symbol" readonly="readonly">
  3. <script type="text/javascript">
  4. function symbole() {
  5. var tablica = [];
  6. var tablica1 = new Array('a','ą','b','c','ć','d','e','ę','f','g','h','i','j','k','l','ł','m','n','ń','o','ó','p','q','r','s','ś','t','u','v','w','x','y','z','ź','ż');
  7. var tablica2 = new Array('a1','a2','b3','c4','c5','d6','e7','e8','f9','g1','h2','i3','j4','k5','l6','l7','m8','n9','n1','o2','o3','p4','q5','r6','s7','s8','t9','u1','v2','w3','x4','y5','z6','z7','z8');
  8. wartosc_input = $("nazwa").val();
  9. wartosc_input = str_replace(tablica1, tablica2, wartosc_input);
  10.  
  11. nazwa = document.getElementById("nazwa");
  12. symbol = document.getElementById("symbol");
  13. symbol.value = tablica2[nazwa.value] !== undefined ? tablica2[nazwa.value] : "";
  14. }
Go to the top of the page
+Quote Post
kamil4u
post 14.06.2012, 15:43:27
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


http://jsfiddle.net/5dDKy/ ? Opisz dokładniej o co Ci chodzi!


--------------------
Go to the top of the page
+Quote Post
dezerter_af
post 14.06.2012, 17:43:44
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 1.04.2011

Ostrzeżenie: (0%)
-----


W zasadzie to działa super i prawie tak jak chciałem ale...

Potrzebuję dwóch inputów, w jeden wpisuje tekst a w drugim automatycznie pojawia się już zakodowany. Jeżeli ktoś mi pomoże i będzie działać to mogę zrobić jakieś małe donate na paypal smile.gif
Go to the top of the page
+Quote Post
CuteOne
post 14.06.2012, 18:13:56
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


[JAVASCRIPT] pobierz, plaintext
  1.  
  2. function myReplace(str) {
  3.  
  4. var replace = new Array('a','ą','b','c','ć','d','e','ę','f','g','h','i','j','k','l','ł','m','n','ń','o','ó','p','q','r','s','ś','t','u','v','w','x','y','z','ź','ż');
  5. var by = new Array('a1','a2','b3','c4','c5','d6','e7','e8','f9','g1','h2','i3','j4','k5','l6','l7','m8','n9','n1','o2','o3','p4','q5','r6','s7','s8','t9','u1','v2','w3','x4','y5','z6','z7','z8');
  6.  
  7. for (var i=0; i<replace.length; i++) {
  8.  
  9. str = str.replace(replace[i], by[i]);
  10. }
  11. return str;
  12. }
  13.  
  14. function symbole() {
  15.  
  16. nazwa = document.getElementById("nazwa").value;
  17. document.getElementById("symbol").value = myReplace(nazwa);
  18. }
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
dezerter_af
post 14.06.2012, 18:53:27
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 1.04.2011

Ostrzeżenie: (0%)
-----


Powyższy przykład nie działa : >
http://jsfiddle.net/5dDKy/1/
Go to the top of the page
+Quote Post
kamil4u
post 14.06.2012, 19:17:47
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


http://jsfiddle.net/5dDKy/2/

--edit--
I poprawiona wersja poprzednika: http://jsfiddle.net/5dDKy/3/
Chociaż słowo poprawiona to za dużo napisane... Wystarczyło wywołać funkcję

Ten post edytował kamil4u 14.06.2012, 19:19:45


--------------------
Go to the top of the page
+Quote Post
dezerter_af
post 14.06.2012, 19:57:23
Post #7





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 1.04.2011

Ostrzeżenie: (0%)
-----


Panowie, świetnie i elegancko smile.gif Wszystko gra gitara ale pytanie : P

Czy jest jakiś sposób na ignorowanie znaków?
Go to the top of the page
+Quote Post
kamil4u
post 14.06.2012, 20:42:29
Post #8





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Jest. W moim przypadku już to zrobiłem.

Mamy tam kod:
Kod
return (a2[ a1.indexOf( char ) ] || '');

Czyli, jeżeli nie będzie znaku w tablicy to zostanie zwrócona wartość '', czyli nic.

Chyba, że chodzi Ci o coś innego, wtedy opisz dokładniej.


--------------------
Go to the top of the page
+Quote Post
dezerter_af
post 14.06.2012, 21:22:46
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 1.04.2011

Ostrzeżenie: (0%)
-----


nie wiem dlaczego nie pojawiło się tam "wielkich". Chodzi o rozróżnianie liter. Aktualnie kiedy wpiszę małe jest ok, bo tak jest w tablicy ale co z dużymi?

Tutaj znalazłem "rozwiązanie" ale brak styczności ze JS sprawia, że nie wiem jak to zastosować:
http://forum.php.pl/index.php?showtopic=111291
Go to the top of the page
+Quote Post
kamil4u
post 14.06.2012, 21:36:23
Post #10





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


http://jsfiddle.net/5dDKy/4/


--------------------
Go to the top of the page
+Quote Post
dezerter_af
post 15.06.2012, 14:01:43
Post #11





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 1.04.2011

Ostrzeżenie: (0%)
-----


WOW! Ten kod działą najlepiej ze wszystkich które zostały podane.

Dziękuje bardzo mocno : )

Jeszcze ostatnie pytanie, wczoraj byłem w domu jak to pisałem. Teraz nie działa sprawdzanie czy login jest zajęty czy nie. Da się coś na to poradzić czy pozostaje już zrezygnować ze sprawdzania czy login jest zajęty ?

  1. <tr>
  2. <td class="tklient_panel_n">login</td>
  3. <td class="tklient_panel_w">
  4. <input type="text" name="login" value="<?php echo $klient_login ?>" onkeyup="sprawdz_login(<?php echo $id ?>)" id="login">
  5. <div style="display: inline" id="login_status"></div>
  6. </td>
  7. </tr>
  8. <tr>
  9. <td class="tklient_panel_n">hasło</td>
  10. <td class="tklient_panel_w"><input type="text" name="haslo" id="haslo" value="<?php echo $klient_haslo ?>"></td>
  11. </tr>
  12. <script type="text/javascript">
  13. function change( char ){
  14. var a1,a2;
  15. char = char.toLowerCase();
  16. a1 = ['a','ą','b','c','ć','d','e','ę','f','g','h','i','j','k','l','ł','m','n','ń','o','ó','p','q','r','s','ś','t','u','v','w','x','y','z','ź','ż'];
  17. a2 = ['a1','a2','b3','c4','c5','d6','e7','e8','f9','g1','h2','i3','j4','k5','l6','l7','m8','n9','n1','o2','o3','p4','q5','r6','s7','s8','t9','u1','v2','w3','x4','y5','z6','z7','z8'];
  18. return (a2[ a1.indexOf( char ) ] || '');
  19. }
  20. document.getElementById('login').onkeyup = function(){
  21. var i,el;
  22. el = document.getElementById('haslo');
  23. el.value = '';
  24. for( i=0; i<this.value.length; i++){
  25. el.value += change( this.value[i] );
  26. }
  27. }
  28. </script>


A tutaj funkcja sprawdzająca login:
  1. function sprawdz_login(klient)
  2. {
  3. login=document.getElementById("login").value;
  4.  
  5. if ( login.length>0 )
  6. {
  7. var xmlhttp;
  8.  
  9. if ( window.XMLHttpRequest )
  10. {
  11. xmlhttp=new XMLHttpRequest();
  12. }
  13. else
  14. {
  15. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  16. }
  17.  
  18. xmlhttp.onreadystatechange=function()
  19. {
  20. if ( xmlhttp.readyState==4 && xmlhttp.status==200 )
  21. {
  22. document.getElementById("login_status").innerHTML=xmlhttp.responseText;
  23. }
  24. }
  25.  
  26. xmlhttp.open("GET","sprawdz_login_klient.php?login="+login+"&klient="+klient+"&nr="+Math.random(),true);
  27.  
  28. xmlhttp.send();
  29. }
  30. else
  31. {
  32. document.getElementById("login_status").innerHTML="";
  33. }
  34. }


@bump
Go to the top of the page
+Quote Post
kamil4u
post 15.06.2012, 14:21:34
Post #12





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Kod
<input type="text" name="login" value="<?php echo $klient_login ?>" onkeyup="sprawdz_login(<?php echo $id ?>)" id="login">

->
Kod
<input type="text" name="login" value="<?php echo $klient_login ?>" id="login">


i

Kod
document.getElementById('login').onkeyup = function(){
var i,el;
el = document.getElementById('haslo');
el.value = '';
for( i=0; i<this.value.length; i++){
el.value += change( this.value[i] );
}
}

->
Kod
document.getElementById('login').onkeyup = function(){
var i,el;
el = document.getElementById('haslo');
el.value = '';
for( i=0; i<this.value.length; i++){
el.value += change( this.value[i] );
}

sprawdz_login(<?php echo $id ?>);
}



Poducz się podstaw JS, bo z takimi prostymi rzeczami to powinienem Ci dać link do kursu JS, a nie gotowca dawać smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:45