• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dzielnie przez zero JS zabezpieczenie formularza

+3 głosów
76 wizyt
pytanie zadane 21 października w JavaScript przez szajjba Nowicjusz (180 p.)

Cześć, potrzebuje pomocy w programie JavaScript a mianowicie w zabezpieczeniu formularza przed dzieleniem przez zero oraz pozostawieniem formularza pustego. 

Program działa kiedy:
Oba formularze są puste
Wartość 'a' jest uzupełniona a wartość 'b' równa zero

Problem tkwi w momencie kiedy b==0 a wartość 'a' jest pusta, wtedy jest komunikat, że nie można dzielić przez zero, chodzi aby w tym wypadku pokazywało aby uzupełnić 

function dziel()   
        {
        var a = (document.getElementById("a").value);
        var b = (document.getElementById("b").value); 
        if (isNaN(a) || !b)
          {
            document.getElementById("wynik").innerHTML = "uzupelnij";
        }
            else if(b==0)
            {
                document.getElementById("wynik").innerHTML = "nie wolno dzielić przez zero";
            }
            else{
             var wynik = a / b;
             document.getElementById("wynik").innerHTML = "Wynik działania wynosi: "+ wynik; 
            }
          }

 

komentarz 21 października przez Wiciorny Mędrzec (187,710 p.)
"Cholero, nie dziel przez zero" ~~ :)

3 odpowiedzi

+2 głosów
odpowiedź 21 października przez SzkolnyAdmin Maniak (62,700 p.)
wybrane 22 października przez szajjba
 
Najlepsza

W liniach 3 i 4 przepuść dane z formularza przez funkcję parseFloat lub parseInt (jak pobierasz tylko liczby całkowite  z pola typu number). W warunku w linii 5 również dla zmiennej b użyj funkcji isNaN.

+3 głosów
odpowiedź 21 października przez qax Mądrala (6,510 p.)

Osobiście zrobiłbym to tak:

function dziel() {
   var a = parseFloat((document.getElementById("a").value));
   var b = parseFloat((document.getElementById("b").value)); 
   if (!isNaN(a) && !isNaN(b)) {
      if(b != 0) {
         var wynik = a / b;
         document.getElementById("wynik").innerHTML = "Wynik działania wynosi: " + wynik;
      } else {
         document.getElementById("wynik").innerHTML = "nie wolno dzielić przez zero";
      }
   } else {
      document.getElementById("wynik").innerHTML = "uzupelnij";
   }
}

Do pobierania liczb z formularza lepiej użyć inputów typu number.

+3 głosów
odpowiedź 21 października przez ScriptyChris Mędrzec (168,660 p.)

Możesz taką walidację zrobić na poziomie HTML. Ustaw atrybuty required oraz min="1" (tutaj warto ustawić typ inputa na number) lub jakiś ułamek, typu 0.1 i wtedy wysłanie formularza zostanie zablokowane przez przeglądarkę; a możesz też odpalić taką walidację z poziomu JS-a, żeby otrzymać boolean oznaczający (nie)poprawność kontrolki/formularza i na tej podstawie pokazać użytkownikowi własne komunikaty o błędach.

Podobne pytania

+1 głos
2 odpowiedzi 941 wizyt
pytanie zadane 28 czerwca 2015 w HTML i CSS przez niezalogowany
0 głosów
2 odpowiedzi 1,136 wizyt
pytanie zadane 8 listopada 2017 w JavaScript przez daduw Nowicjusz (160 p.)
0 głosów
1 odpowiedź 169 wizyt
pytanie zadane 18 października 2018 w HTML i CSS przez LinosiK Obywatel (1,730 p.)

85,870 zapytań

134,642 odpowiedzi

298,914 komentarzy

56,738 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 926p. - rucin93
  2. 925p. - Whistleroosh
  3. 912p. - nidomika
  4. 876p. - adrian17
  5. 867p. - Michal Drewniak
  6. 866p. - Mikbac
  7. 863p. - Mateusz Bogdan
  8. 859p. - CC PL
  9. 797p. - Argeento
  10. 704p. - ScriptyChris
  11. 683p. - tokox
  12. 660p. - Vinox
  13. 645p. - TheLukaszNs
  14. 642p. - s. Dorota Kowalewska
  15. 601p. - Marcin Harasimowicz
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...