Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][JavaScript]problem logiczny w js
Maciek1705
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


Witam serdecznie, ostatnio tworzyłem sobie bardzo prosty formularz do obliczeń pewnych cyfr lecz w pewnym momencie napotkałem na dość kuriozalny błąd który stanowi dla mnie zagadkę już przedstawiam kod:
  1. <script type="text/javascript">
  2. function checkform(){
  3. var from = document.getElementById('from').value;
  4. var to = document.getElementById('to').value;
  5. var rows = document.getElementById('rows').value;
  6.  
  7. if(from == 1){
  8. document.getElementById('submit').style.display = 'none';
  9. document.getElementById('message').style.display = 'block';
  10. }
  11. else{
  12. if(from>=to){
  13. document.getElementById('submit').style.display = 'none';
  14. document.getElementById('message').style.display = 'block';
  15. }
  16. else{
  17. if(((to - from) % rows) != 0){
  18. document.getElementById('submit').style.display = 'none';
  19. document.getElementById('message').style.display = 'block';
  20. }
  21. else{
  22. document.getElementById('submit').style.display = 'block';
  23. document.getElementById('check').style.display = 'none';
  24. document.getElementById('message').style.display = 'none';
  25. }
  26. }
  27. }
  28. }
  29. </script>
  30. </head>
  31. <form action="generator.php" method="post" id="my_form">
  32. <label for="from">Zakres od (nie stosować "1")</label>
  33. <input name="from" type="text" placeholder="wartość początkowa" maxlength="3" id="from" />
  34. <label for="to">Zakres do</label>
  35. <input name="to" type="text" placeholder="wartość końcowa" maxlength="3" id="to" />
  36. <label for="rows">Liczba wierszy w kolumnach</label>
  37. <input name="rows" type="text" placeholder="wartość" maxlength="3" id="rows" />
  38. <input type="submit" id="submit" value="GENERUJ"/>
  39. <input type="button" id="check" value="SPRAWDŹ" onClick="checkform()" />
  40. </form>
  41. </body>


ok teraz opis jak to działa te trzy pola obsługują liczby, zakres od to liczba początkowa od której generator zacznie zakres do to liczba końcowa z liczba wierszy to inaczej liczba pól. Aby miało to sens musi być spełniony warunek (zakres do - zakres od)/liczba wierszy musi być liczbą dodatnią całkowitą. Wszystko działa ale gdy jako zakres od przyjmiemy 50 a jako zakres do 350 natomiast liczbe wierszy damy 60 to już jest zonk i w tym momencie nie wiem dlaczego jak by nie był0 (350-50)/60=5

Czy ktoś mógłby mi podpowiedzieć o co chodzi? Drugą sprawą jest to że chciałem to zrobić całe te sprawdzanie na zasadzie wpisywania wartości do pól a funkcja AJAX by sprawdzała ten warunek lecz nie wiedziałem jak zrobić by po wpisaniu w ostatni input sprawdziła czy wszystko gra bo myślałem o wykorzystaniu zdarzenia onchange ale to chyba nie jest dobry pomysł.

Ten post edytował Maciek1705 16.01.2013, 21:02:01
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Jakby nie było to masz rację (350-50)/60 to istotnie 5, ale w Twoim kodzie jest (to - from) % rows, czyli wpisując wcześniej wymienione liczby wynik wynosi 0. Dzielenie modulo to nie to samo co zwykłe dzielenie.

Co do drugiej części pytania, możesz wykorzystać zdarzenie keyup, ale nie wiem czy to dobry pomysł.

Ten post edytował b4rt3kk 16.01.2013, 21:11:36
Go to the top of the page
+Quote Post
Maciek1705
post
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


Rozumiem ale właśnie paradoks polega na tym że dam np jako od - 10 do -360 a liczba wierszy 70 i wszystko gra działa nie ma błędu a wynik też jest 5 (IMG:style_emoticons/default/ohmy.gif) o to w tym chodzi. Jeśli chodzi o dzielenie modulo to sprawdzam czy jest to liczba całkowita zobacz że jest tam warunek że jeżeli reszta z dzielenia jest różna od zera to nie wysyłaj tylko wyświetl komunikat o błędzie
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 17:37