Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie wartości pola
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
polibode
Witam
Sptawadzam za pomocą funkcji jak się maja do siebie pola w formularzu.
  1. <script language="JavaScript">
  2. function sprawdz()
  3. {
  4.  
  5.     if (tstest.dzien2.value < tstest.dzien1.value)
  6.         alert("Przedział 2 jest mniejszy od 1");
  7. }

a pozniej wykorzystuję php
  1. <td class=log align=left><input type=\"Text\" name=\"dzienx\" value=\"0\" size=2 readonly></td>
  2. <td class=log align=left><input type=\"Text\" name=\"dzien1\" value=\"<? echo $Q1[0]; ?>\" size=2></td>
  3. <td class=log align=left><input type=\"Text\" name=\"dzien2\" value=\"<? echo $Q2[0]; ?>\" size=2></td>
  4. <td class=log align=left><input type=\"Text\" name=\"dzien3\" value=\"<? echo $Q3[0]; ?>\" size=2></td>
  5. <td class=log align=left><input type=\"Text\" name=\"dzien4\" value=\"<? echo $Q4[0]; ?>\" size=2></td>
  6. <td class=log align=left><input type=\"Text\" name=\"dzien5\" value=\"<? echo $Q5[0]; ?>\" size=2></td>

wczesniej jednak czyniąc tak
  1. <?php
  2.  
  3.  echo &#092;"<form  name=\"tstest\" action=\"index.php?page=WiekowanieZapasowP1&\".SID. method=\"POST\" onsubmit=sprawdz()>\";
  4.  
  5. ?>

Proszę mi powiedzieć dlaczego jak sie nie zgadzają wartosci pol , to i tak jest interakcja (leci dalej) dalej na przycisk SUBMIT (owszem alert sie pojawi) pomimo umieszczenia w form odwołania do funkcji sprawdz
  1. <input type=submit value=\"<? echo $user->change_language('Wiekowanie zapasów'); ?>\">
nospor
twoja funkcja sprawdz powinna zwracac true lub false w zalezności od wyniku, a wywowalnie:
onsubmit="return sprawdz()"
polibode
zrobiłem coś takiego
  1. <script language="JavaScript">
  2. function sprawdz()
  3. {
  4. var idz = false;
  5.  
  6. if (wiek.dzien2.value < wiek.dzien1.value)
  7. {
  8. alert("Przedział 2 jest mniejszy od 1");
  9. idz = false;
  10. }
  11. if (wiek.dzien3.value < wiek.dzien2.value)
  12. {
  13. alert("Przedział 3 jest mniejszy od 2");
  14. idz = false;
  15. }
  16. if (wiek.dzien4.value > wiek.dzien5.value)
  17. {
  18. alert("Przedział 4 jest większy od 5");
  19. idz = false;
  20. }
  21. else
  22. { idz = true; }
  23.  
  24. return idz;
  25. }

a w FORM
  1. <?php
  2.  
  3.  echo &#092;"<form name=\"wiek\" action=\"index.php?page=WiekowanieZapasowP1&\".SID. method=\"POST\" onsubmit=\"return sprawdz()\">\";
  4.  
  5. ?>

Również wyświetla alert ale leci dalej....sad.gif
nospor
gdyż na koniec twoja zmienna idz przyjumje wartośc true. Twoje warunki są beznadziejne. Zwracaj od razu wynik.:
  1. function sprawdz()
  2. {
  3.  
  4. if (wiek.dzien2.value < wiek.dzien1.value)
  5. {
  6. alert("Przedział 2 jest mniejszy od 1");
  7. return false;
  8. }
  9. if (wiek.dzien3.value < wiek.dzien2.value)
  10. {
  11. alert("Przedział 3 jest mniejszy od 2");
  12. return false;
  13. }
  14. if (wiek.dzien4.value > wiek.dzien5.value)
  15. {
  16. alert("Przedział 4 jest większy od 5");
  17. return false;
  18. }
  19. else
  20. { return true; }
  21.  
  22. }
polibode
to jest na poczet pozniejszych dodatkow , chcialem potestować

NIe zgadzam się z myslą , ze moja zmienna przyjmuje wartość true, skoro jest tam else...
nospor
jest else ale tylko do jednego warunku. najwyraźniej nie jest on spelniony i wchodzi w true. Zrobiles jak ci podalem? gdy pierwszy z warunkoów nie jest spelniony to już sie nie submitnie. Zgadza się? Musisz se to lepiej rozplanować. Bo przecież true ma byc zwrocony gdy wszystko bylo ok, a nie gdy tylko ostatnie sprawdanie jest ok.
polibode
kłaniam się nisko , przepraszam....
nospor
przyjęte biggrin.gif

proponuję ci takie rozwiązanie:
  1. <script language="JavaScript">
  2. function sprawdz()
  3. {
  4. var idz = true;
  5.  
  6. if (wiek.dzien2.value < wiek.dzien1.value)
  7. {
  8. alert("Przedział 2 jest mniejszy od 1");
  9. idz = false;
  10. }
  11. if (wiek.dzien3.value < wiek.dzien2.value)
  12. {
  13. alert("Przedział 3 jest mniejszy od 2");
  14. idz = false;
  15. }
  16. if (wiek.dzien4.value > wiek.dzien5.value)
  17. {
  18. alert("Przedział 4 jest większy od 5");
  19. idz = false;
  20. }
  21.  
  22. return idz;
  23. }
Raz na poczatku robisz true i zmieniasz gdy cos źle, ale nie przerywamy sprawdzania. W ten sposób mozy byc raz lub kilka źle i zawsze zróci false. true zwróci gdy wszystko bedzie ok
polibode
nospar , towja koncepcja nie działa , moja ta ponizej tak , ale
dlaczego po wejsciu na stronę i poraz pierwszy ustwieniu zmiennych , nacisnieciu klawisza SUBMIT wyswietla się komunikat..pokazany pozniżej..

  1. <script language="JavaScript">
  2. function sprawdz()
  3. {
  4. var idz = false;
  5.  
  6. if (wiek.dzien2.value < wiek.dzien1.value)
  7. {
  8. alert("Przedział 2 jest mniejszy od 1");
  9. return false;
  10. }
  11. else if (wiek.dzien3.value < wiek.dzien2.value)
  12. {
  13. alert("Przedział 3 jest mniejszy od 2");
  14. return false;
  15. }
  16. else if (wiek.dzien4.value < wiek.dzien3.value)
  17. {
  18. alert("Przedział 4 jest mniejszy od 3");
  19. return false;
  20. }
  21. else if (wiek.dzien5.value < wiek.dzien4.value)
  22. {
  23. alert("Przedział 5 jest mniejszy od 4");
  24. return false;
  25. }
  26. else
  27. { return true; }
  28.  
  29. }

Otóż moje dane to
dzien1=30
dzien2=60
dzien3=90
dzien4=180
dzien5=260

Ktore są odpowiednio w INPUTACH ma się rozumieć
--------
Dlaczego naciskając klawisz, odrazu wyswietla mi alerta
alert("Przedział 4 jest mniejszy od 3");
---------
Dziwota nieprawdaż?
nospor
zadna dziwota, najwyraźniej wiek.dzien4.value jest mniejsze od wiek.dzien3.value
Tu nie ma co dziwować. Może masz inputy w zlej kolejności i ci się myli, może masz inne wartości. Sprawdź, a jak dalej niewiesz o co biega, to pokaż caly kod, abysmy i my się podziwili biggrin.gif
polibode
Proszę bardzo jeszcze raz poprawka, ta moja

Z procki lecą wartości takie jak wyżej napisałem
  1. <html>
  2. <body border=0>
  3. <script language=\"JavaScript\">
  4. function sprawdz()
  5. {
  6. var idz = false;
  7.  
  8.     if (wiek.dzien2.value < wiek.dzien1.value) 
  9.     {
  10.         alert(\"Przedział 2 jest mniejszy od 1\");
  11.         return false;
  12.     }
  13.     else if (wiek.dzien3.value < wiek.dzien2.value) 
  14.     {
  15.         alert(\"Przedział 3 jest mniejszy od 2\");
  16.         return false;
  17.     }
  18.     else if (wiek.dzien4.value < wiek.dzien3.value) 
  19.     {
  20.         alert(\"Przedział 4 jest mniejszy od 3\");
  21.         return false;
  22.     }
  23.     else if (wiek.dzien5.value < wiek.dzien4.value) 
  24.     {
  25.         alert(\"Przedział 5 jest mniejszy od 4\");
  26.         return false;
  27.     }
  28.     else 
  29.     { 
  30.         return true; 
  31.     }
  32.  
  33. }
  34. </script>
  35.  
  36. <br><br><br><br><br><br><br><br><br>
  37. <center>
  38. <?
  39.  
  40.     if (session_is_registered ('data_1'))
  41.         session_unregister  ('data_1');
  42.     if (session_is_registered ('data_2'))
  43.         session_unregister  ('data_2');
  44.     if (session_is_registered ('data_3'))
  45.         session_unregister  ('data_3');
  46.     if (session_is_registered ('data_4'))
  47.         session_unregister  ('data_4');
  48.     if (session_is_registered ('data_5'))
  49.         session_unregister  ('data_5');
  50.  
  51.  echo $user->change_language('Wiekowanie zapasów');
  52.  echo &#092;"<form  name=\"wiek\" action=\"index.php?page=WiekowanieZapasowP1&\".SID. method=\"POST\" onsubmit=\"return sprawdz()\">\";
  53.  
  54. $dzisiaj = getdate(); 
  55. $miesiac = $dzisiaj['mon']; 
  56. $dzien   = $dzisiaj['mday']; 
  57. $rok     = $dzisiaj['year']; 
  58.  
  59. $user->connection_db();
  60.  
  61.   $sql1=&#092;"exec intra_wusr_WiekowanieZapasow_CARMENP1Init\";
  62.   $wykonaj = mssql_query($sql1);
  63.   while($wiersz=mssql_fetch_array($wykonaj)){
  64.       $Q1[] = $wiersz['Q1'];
  65.       $Q2[] = $wiersz['Q2'];
  66.       $Q3[] = $wiersz['Q3'];
  67.       $Q4[] = $wiersz['Q4'];
  68.       $Q5[] = $wiersz['Q5'];
  69.   }
  70.   $ilosc_mag = mssql_num_rows($wykonaj);
  71.   mssql_close($sql1);
  72. ?>
  73.  
  74. <table class=first cellpadding=10 cellspacing=1px>
  75. <tr>
  76. <td class=log align=left>
  77. <? echo $user->change_language('Okresy dni:'); ?></td>
  78. <td class=log align=left><input class=wiekowanie type=\"Text\" name=\"dzienx\" value=\"0\" size=2 readonly></td>
  79. <td class=log align=left><input type=\"Text\" name=\"dzien1\" value=\"<? echo $Q1[0]; ?>\" size=2></td>
  80. <td class=log align=left><input type=\"Text\" name=\"dzien2\" value=\"<? echo $Q2[0]; ?>\" size=2></td>
  81. <td class=log align=left><input type=\"Text\" name=\"dzien3\" value=\"<? echo $Q3[0]; ?>\" size=2></td>
  82. <td class=log align=left><input type=\"Text\" name=\"dzien4\" value=\"<? echo $Q4[0]; ?>\" size=2></td>
  83. <td class=log align=left><input type=\"Text\" name=\"dzien5\" value=\"<? echo $Q5[0]; ?>\" size=2></td>
  84. </tr>
  85.  
  86. <tr>
  87. <td class=log align=center colspan=7>
  88. <INPUT type=\"hidden\" name=\"sort\" value=\"2\">
  89. <input type=submit value=\"<? echo $user->change_language('Wiekowanie zapasów'); ?>\">
  90. </td>
  91. </tr>
  92. </table>
  93. </form>
  94.  
  95. </center>
  96.     
  97. <center>
  98. <?
  99. echo &#092;"<form action=\"index.php?page=mg_cele&\".SID. method=\"POST\">\";
  100. ?>
  101.  
  102. <input type=submit name=\"new_data\" value=\"<? echo $user->change_language('Magazynowanie'); ?>\">
  103. </form>
  104. </center>
  105. </body>
  106. </html>
nospor
Cytat
nospar , towja koncepcja nie działa
Moja dziala dobrze a nawet lepiej bo sprwdzi wszystko a nie tylko pierwsze bledne. A tak pozatym obie są moje, tylko pierwsza na szybko dla zilustrowania problemu byla pisana, a druga juz po przemysleniach biggrin.gif

Problem jest w czym iinnym. Twoje porownywanie porównuje napisy anie liczby. dlatego 180 jest mniejszze 90. Musisz przed porównaniem zamienic to na liczby.
Jakas tam funkcja jest do tego
kszychu
Cytat(nospor @ 2005-07-28 14:07:46)
Jakas tam funkcja jest do tego

parseInt(string)
Jakiś czas temu miałem przez to niezłą zagwozdkę.
polibode
Dzięki wszystkim....za wszystko
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.