Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] W jaki sposób sprawdzić, czy dana liczba jest całkowita?
Forum PHP.pl > Forum > Przedszkole
kukix
Witam.
Natrafiłem na taki maly problem.

W jaki sposób można sprawdzić, czy podana liczba jest całkowita, czy rzeczywistą?

proste zadanie, ale jednak coś nie wiem jak za to się zabrac.


Będe bardzo wdzieczny za wszelkie wypowiedzi.
Shili
http://pl2.php.net/manual/pl/function.is-int.php
Znajdziesz tam też jak sprawdzić czy liczba jest rzeczywista
kukix
Cytat(Shili @ 11.07.2008, 11:06:36 ) *
http://pl2.php.net/manual/pl/function.is-int.php
Znajdziesz tam też jak sprawdzić czy liczba jest rzeczywista

tylko, że problem w tym, że potrzebuje sprawdzić, czy jest całkowita po stronie przegladarki.. w momencie wpisywania do formularza..
Shili
Przepraszam, ślepnę na starość. Js nie znam na tyle, żeby z pewnością stwierdzić, że nie ma tam wbudowanych funkcji, jednakże ja ich nie znam.

Kod który udało mi się stworzyć:
Kod
<script type="text/javascript">
    function sprawdz()
    {
        if(document.getElementById('liczbac').value.search(/^[0-9\s]+$/) == -1) {
            alert('Liczba nie jest całkowita');
        }
        else {
            alert('Liczba jest całkowita');
        }
        if(document.getElementById('liczbar').value.search(/^[0-9\s]+[.,][0-9\s]+$/) == -1) {
            alert('Liczba nie jest rzeczywista');
        }
        else {
            alert('Liczba jest rzeczywista');
        }
    }
    
</script>

<input type="text" id="liczbac" />
<input type="text" id="liczbar" />
<input type="button" value="sprawdź" onclick="sprawdz(); return false;" />

W liczbie całkowitej akceptuje cyfry od 0-9 i spacje
W rzeczywistej cyfry 0-9, spacje i jeden przecinek lub jedną kropkę.
m87
Ja bym to zrobił w ten sposób:

Kod
function isInteger(x)
   {
       if (x == Math.round(x))
           return true;
       return false;
   }


Aha, a jeśli ta liczba jest wpisywana w input, to musiałbyś zrobić coś takiego:

Kod
x = parseFloat(document.getElementById('liczba').value)
if (isNaN(x))
    alert('To nie jest liczba');
else if (isInteger(x))
    alert('To jest liczba calkowita');
else
    alert('To jest liczba rzeczywista');
kukix
Cytat(m87 @ 11.07.2008, 12:09:35 ) *
Kod
function isInteger(x)
   {
       if (x == Math.round(x))
           return true;
       return false;
   }


To jużwygląda dużo ciekawiej.. a nie ma jakiś wbudowanych funkcji w js do sprawdzania , czy liczba jest całkowita?
piotrekkr
Dokladnie tak samo nazywa się funkcja w javascript jak probowali stworzyć koledzy wcześniej czyli isInteger(). Tutaj jest przykładowy kod:
Kod
function validateInt()
   {
      var o = document.frmInput.txtInput;
      switch (isInteger(o.value))
      {
         case true:
            alert(o.value + " is an integer")
            break;
         case false:
            alert(o.value + " is not an integer")
      }
   }

kod ze strony: http://www.acmesoffware.com/acme/default.asp
webdice
Może wystarczy Ci parseInt, nie będziesz musiał sprawdzać typu, od razu prze konwertuje Ci do liczby całkowitej.
m87
Cytat(piotrekkr @ 11.07.2008, 14:19:22 ) *
Dokladnie tak samo nazywa się funkcja w javascript jak probowali stworzyć koledzy wcześniej czyli isInteger(). Tutaj jest przykładowy kod:


Ciekawe, nie widziałem tej funkcji w dokumentacji...
piotrekkr
Cytat(m87 @ 11.07.2008, 15:05:36 ) *
Ciekawe, nie widziałem tej funkcji w dokumentacji...


No chyba masz racje mój błąd nie ma w dokumentacji takiej funkcji :/ na stronie którą podałem gostek nie napisał że to funkcja napisana przez niego. Ale może wrzuce jego funkcję jakby ktoś chciał:
Kod
function isInteger (s)
{
var i;

if (isEmpty(s))
if (isInteger.arguments.length == 1) return 0;
else return (isInteger.arguments[1] == true);

for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);

if (!isDigit(c)) return false;
}

return true;
}
kukix
Cytat(webdicepl @ 11.07.2008, 14:50:48 ) *
Może wystarczy Ci parseInt, nie będziesz musiał sprawdzać typu, od razu prze konwertuje Ci do liczby całkowitej.

Chodzi o to, że nie moge przekonwerterować do liczby całkowitej, tylko potrzebuje wyświetlić użytkownikowi komunikat, żeby sam poprawił bląd.
webdice
Możesz automatycznie zmienić wartość pola tekstowego.
kukix
Cytat(webdicepl @ 12.07.2008, 13:03:05 ) *
Możesz automatycznie zmienić wartość pola tekstowego.

Tak.. ale w tym polu internauta pisze ważne dane, nie moge poprawić sobie za niego.. musi być świadomyt tego, że źle wprowadził...
jak sie zmieni samo, nie zaóważy tego i poźniej będą pretensje, że nie jest tak jak powinno być..
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.