Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kilka spraw zwiazanych z js
jjkk
post 18.08.2007, 16:09:14
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.05.2006

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


Otoz zaczynam przygode z js i napotkalem kilka problemow:) Od razuproszeosoby odsylajace do manuala o nie zabieranie glosu, bo zawsze patrze tam zanim zadam pytanie
Otoz:
1) Czemu pod IE nie dziala jak trzeba...przeciez nie ma w tym niczego skomplikowanego:)

  1. <?php
  2. <script type="text/javascript">
  3.  
  4. window.onload = function() {
  5.  
  6. document.forms['formularz'].onkeyup = sprawdz;
  7.  
  8. }
  9.  
  10. function sprawdz() {
  11.  
  12. var elements = document.forms['formularz'].elements;
  13. for(var i=0;i<elements.length;i++) {
  14. if(elements[i].value.length == elements[i].getAttribute('maxlength'))
  15. elements[i+1].focus();
  16. }
  17.  
  18.  
  19. }
  20.  
  21. </script>
  22. ?>


2) Czemu zwraca "undefined"?

  1. <?php
  2. <script type="text/javascript">
  3.  
  4. var i = 5;
  5.  
  6. window.onload = function() {
  7.  
  8.  
  9. var j;
  10.  
  11. if(j) {
  12. var i = 1;
  13. }
  14.  
  15. alert(i);
  16.  
  17. }
  18. </script>
  19. ?>


3) Czemu nie mozna tak:)

  1. <?php
  2. <script type="text/javascript">
  3.  
  4. var i = document.getElementById('cos');
  5.  
  6. alert(i);
  7.  
  8. </script>
  9. ?>


tylko trzeba tak:

  1. <?php
  2. <script type="text/javascript">
  3.  
  4. var i = document.getElementById('cos');
  5.  
  6. alert(i);
  7.  
  8. window.onload = function() {
  9.  
  10. var i = document.getElementById('cos');
  11.  
  12. alert(i);
  13.  
  14. }
  15.  
  16. </script>
  17. ?>


dzieki za odpowiedzi!
Go to the top of the page
+Quote Post
abc667
post 18.08.2007, 16:19:42
Post #2





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

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


ad1.
bo to ie.
nie działa jak powinno tzn. co?

ad2.
wychodzi na to że js przesłania zmienną 'i' jej lokalnym odpowiednikiem już przy wejściu do funkcji jednak przez ifa zmienna nie zostaje zadeklarowana i dlatego undefined, usuń się var i będzie działać

ad3.
trzeba po onload bo jak weźmiesz od razu to dom może jeszcze nie być gotowy i element cos nie zostanie znaleziony
Go to the top of the page
+Quote Post
jjkk
post 18.08.2007, 16:55:53
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.05.2006

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


Cytat(abc667 @ 18.08.2007, 17:19:42 ) *
ad1.
bo to ie.
nie działa jak powinno tzn. co?


przy 3 i 4 inpucie zaczyna pisac do tylu:) (ie 5.5)

caly kod:
  1. <?php
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl-PL">
  4. <head>
  5. <title></title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  7.  
  8.  
  9. <script type="text/javascript">
  10.  
  11. window.onload = function() {
  12.  
  13. document.forms['formularz'].onkeyup = sprawdz;
  14.  
  15. }
  16.  
  17. function sprawdz() {
  18.  
  19. var elements = document.forms['formularz'].elements;
  20. for(var i=0;i<elements.length;i++) {
  21. if(elements[i].value.length == elements[i].getAttribute('maxlength') && elements[i+1])
  22. elements[i+1].focus();
  23. }
  24.  
  25.  
  26. }
  27.  
  28.  
  29. </script>
  30.  
  31. </head>
  32. <body>
  33. <div>
  34. <form name="formularz">
  35. <input type="text" name="jeden" maxlength="5" />
  36. <input type="text" name="dwa" maxlength="5" />
  37. <input type="text" name="t" maxlength="5" />
  38. <input type="text" name="c" maxlength="5" />
  39. </form>
  40. </div>
  41. </body>
  42. </html>
  43. ?>


Ten post edytował jjkk 18.08.2007, 16:58:46
Go to the top of the page
+Quote Post
jarrod
post 18.08.2007, 19:59:47
Post #4





Grupa: Zarejestrowani
Postów: 312
Pomógł: 9
Dołączył: 14.10.2006
Skąd: warszawa

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


Trochę nie tak zabrałeś się to tego zagadanienia.
Rozbudowałem trochę kod ale działa tak jak chcesz (tak myślę przynajmniej winksmiley.jpg

Sprawdzone pod IE 7.0.6, FF 2.0.6, Safari 3.0.3
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="pl-PL">
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  3. <script type="text/javascript">
  4. window.onload = init;
  5. function init()
  6. {
  7. // do każdego elementu formularza dodajemy akcję onkeyup
  8. var elements = document.getElementById('formularz').elements;
  9. for( var i=0; i < elements.length; i++ )
  10. {
  11. elements[i].onkeyup = sprawdz;
  12. }
  13. }
  14. function sprawdz(e)
  15. {
  16. // nie wiadomo z którego pola wywołane jest zdarzenie więc należy się tego dowiedzieć
  17. var e = e || window.event;
  18. if (e.target) targ = e.target;
  19. else if (e.srcElement) targ = e.srcElement;
  20. if (targ.nodeType == 3) // defeat Safari bug
  21. targ = targ.parentNode;
  22.  
  23. if(targ.value.length == targ.getAttribute('maxlength') )
  24. {
  25. // zbieramy kolecję pól typu input w formularzu
  26. var pn_elements = targ.parentNode.childNodes;
  27. var elements = new Array();
  28. for( i=0; i<pn_elements.length; i++ )
  29. {
  30. if(pn_elements[i].nodeName == 'INPUT')
  31. {
  32. elements[elements.length] = pn_elements[i];
  33. }
  34. }
  35. // flaga określająca kiedy przechodzimy przez aktualnie edytowane pole podczas iteracji tablicy z inputami
  36. var start = false;
  37. for( i=0; i<elements.length; i++ )
  38. {
  39. if(elements[i].name == targ.name)
  40. start = true; // od tego momentu startujemy
  41. else if ( start ) // można tutaj dodać warunek - && elements[i].value.length==0 - ale bez tego jest lepszy efekt
  42. {
  43. elements[i].focus();
  44. elements[i].select();
  45. break;
  46. }
  47. }
  48. }
  49. }
  50. </script>
  51. </head>
  52. <div>
  53. <form id="formularz">
  54. <input type="text" name="jeden" maxlength="5" /><br/>
  55. <input type="text" name="dwa" maxlength="3" /><br/>
  56. <input type="text" name="t" maxlength="2" /><br/>
  57. <input type="text" name="c" maxlength="5" /><br/>
  58. </form>
  59. </div>
  60. </body>
  61. </html>
Go to the top of the page
+Quote Post
jjkk
post 19.08.2007, 09:06:34
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.05.2006

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


Dzieki jarrod! Przyznam, ze chcialem osiagnac dany efekt jak najmniejsza iloscia kodu:) napisaem, wlaczylem opere i dziala...wlaczylem ie no i to co napisalem wczesniej sie dzialo:) dzieki roznwiez za komentarze w kodzie, postudiuje moze nacucze sie czegos nowego:p pzdr
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: 7.07.2025 - 00:54