Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> sprawdzenie pola czy zawiera liczbę
xmarko
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 26.02.2004

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


Witam,
w jaki sposob sprawdzić czy w polu input została wpisana wartość liczbowa.
Tworzę formularz - i muszę w nim sprawdzić przed wysłaniem do skryptu php czy wartośc wpisana w pole "masa" jest liczbą czy tekstem.
Jezeli wystepuje teks - to powinien zostać wywolany komunikat o błędzie (atert).
W zasadzie przydałoby się też sprawdzenie czy do wpisania liczby zastosowano przecinek, czy kropkę . Z założenia powinien być wpisany przecinek.
I daltego Skrypt w javie powinien rozpoznać , jaki znak został zastosowany. W przypadku użycia kropki powinien pojawić się komunikat (alert) o błędzie.
Oto przykładowy kod formularza
  1. <form action="karta.php" method="POST" target="_blank" name="formularz">
  2. <input name='masa' size='5' value =''>
  3. </form>

Zwracam sie z prośbą o pomoc w rozwiązaniu mojego problemu.
Jak powinien wygląfdac zapis sprawdzający te zalożenia?
Niestety java dla mnie to "czarna magia"
Za okazane zrozumienie, sugestie i pomoc z góry bardzo dziekuję.


--------------------
marko
Go to the top of the page
+Quote Post
MStaniszczak
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

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


Witam

Masz taką małą funkcyjkę:

Kod
function isNumeric(sText, minus) {
    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;
    
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if ((i == 0) && (Char == "-") && minus)
            continue;
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}


Pozdrawiam
Marcin Staniszczak
Go to the top of the page
+Quote Post
dasko
post
Post #3





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


@MStaniszczak: Funkcja dziurawa. Nie obsługuj przecinków, kropek...

Można to zrobic łatwiej, przy użyciu wyrażeń regularnych... smile.gif

Kod
function check() {
    var reg = /^-?\d+(([,\.]?\d+)|())$/;
    if(reg.test(document.forms['formularz'].masa.value)) {
  return true;
    } else {
  alert("Wpisz wartosc liczbowa!");
  return false;
    }
}


Oczywiście potem należy dodać procedure obsługi zdarzenia onsubmit do formularza:
  1. <form action="karta.php" method="POST" target="_blank" name="formularz" onsubmit="return check();">


Powinno działać... cool.gif
Go to the top of the page
+Quote Post
MStaniszczak
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

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


Bo jest do integerow (chyba niezgrabnie nazwana;-)
To jest do Floatow;-)

Kod
function isFloat(sText) {
    var ValidChars = "0123456789.,";
    var IsNumber=true;
    var Char;
    
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if ((i == 0) && (Char == "-"))
            continue;
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}


Ale przyznaje - Twoje rozwiązenie jest lepsze - moje przepuszca np 1.1.1 czy 1.2,3... Ja staram sie unikc regexp-ów ze względu na wydajność, ale tu czasem się nie da;-)


Pozdrawiam
Marcin Staniszczak

Ten post edytował MStaniszczak 6.03.2005, 14:24:35
Go to the top of the page
+Quote Post
Vir
post
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 25.02.2004

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


Kod
function isNumSpec(n){return/^(\d+[\.,]|)\d+$/.test(n+'')}

Autor:PiotrB.[pl.comp.www]

Niestety Piotr ubiegł mnie - chyba nic lepszego nie da się wymyśleć tongue.gif
Chyba żeby użyć isNaN(), ale wówczas przecinki odpadają...

Ten post edytował Vir 6.03.2005, 21:31:21
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 Aktualny czas: 19.08.2025 - 15:04