Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Tablica i generowanie
Forum PHP.pl > Forum > Przedszkole
dezerter_af
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. }
kamil4u
http://jsfiddle.net/5dDKy/ ? Opisz dokładniej o co Ci chodzi!
dezerter_af
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
CuteOne
[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
dezerter_af
Powyższy przykład nie działa : >
http://jsfiddle.net/5dDKy/1/
kamil4u
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ę
dezerter_af
Panowie, świetnie i elegancko smile.gif Wszystko gra gitara ale pytanie : P

Czy jest jakiś sposób na ignorowanie znaków?
kamil4u
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.
dezerter_af
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
kamil4u
http://jsfiddle.net/5dDKy/4/
dezerter_af
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
kamil4u
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
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.