Nasze strony wykorzystują pliki cookies. Używamy cookies i podobnych m.in. w celach reklamowych i statystycznych oraz w celu dostosowania serwisów do potrzeb użytkowników. Mogą też stosować je nasi reklamodawcy, firmy badawcze oraz dostawcy aplikacji. W przeglądarce można zmienić ustawienia dotyczące cookies. Więcej informacji. Jeśli nie wyrażasz zgody, opuść tę stronę.

Tylko cyfry w formularzu

Forum dyskusyjne poświęcone zagadnieniom związanym z językami JavaScript, VBScript i podobnym

Moderator: Grupa pościgowa ;-)

Tylko cyfry w formularzu

Postprzez lewar » 7 października 2003, o 23:08

Witam ponownie.

Pytanko.

Jak dokonać sprawdzenia czy w formularzu zostały wprowadzone cyfry a nie np litery :?:

Proszę o podpowiedź
lewar
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 167
Dołączył(a): 19 października 2002, o 16:07

Postprzez Wydra707 » 8 października 2003, o 21:31

Musiałbyś dokładniej sprecyzować problem. Czy chodzi Ci o sprawdzenie, czy podana została LICZBA? (dobre będzie np. '1234' lub '12.34'). Czy chodzi Ci o sprawdzenie, czy podane zostały same cyfry? (dobre będzie np. '1234'). Czy chodzi Ci o sprawdzenie czy NIE podana została żadna litera? (dobre będzie np. '1234' lub '12 34' lub '1-23-4')

Co do podpowiedzi, to problem sprowadza się do przeszukania łańcucha znaków odczytanego z właściwości value danego pola (bo value zawsze zwraca łańcuch, nawet jeśli składa się on z samych cyfr). W zależności od żądanego efektu trzeba przeszukać go na obecność lub nieobecność określonych znaków. Zapewne najłatwiej będzie wykorzystać wyrażenia regularne. Np. (zakładając, że zmienna sValue zawiera sprawdzany łańcuch):

sValue.search(/[^0-9]/);
- zwróci wartość -1 (minus jeden) jeśli NIE znajdzie w łańcuchu jakiegokolwiek znaku innego niż cyfra. Czyli: -1 jeśli łańcuch składa się tylko z cyfr lub jest pusty.

sValue.search(/[a-zA-Z]/);
- zwróci wartość -1 jeśli NIE znajdzie w łańcuchu jakiejkolwiek litery. Czyli: -1 jeśli łańcuch składa się z cyfr lub znaków "nieliterowych" lub jest pusty. Uwaga: nie reaguje na polskie litery!

Z wyrażeń regularnych można budować znacznie bardziej skomplikowane warunki, ale może to Ci na razie wystarczy. Rzecz dotyczy MSIE i języka JScript (nie wiem czy nie ma tu jakichś różnic w stosunku do Java Scriptu, ale chyba nie).

Pozdrawiam
Paweł Rajewski
Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Postprzez lewar » 11 października 2003, o 00:43

lewar
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 167
Dołączył(a): 19 października 2002, o 16:07

Postprzez Wydra707 » 13 października 2003, o 19:04

Czyli rozumiem, że ma to być liczba całkowita dodatnia? Konkretna realizacja może być różna w zależności od budowy formularza i tego co jeszcze i kiedy ma być w nim sprawdzane. Najlepiej chyba napisać funkcję, która sprawdzałaby cały formularz przed wysłaniem. Poniżej próbka związana tylko z jednym polem "sztuk":

Funkcja JScript w sekcji HEAD:

function fSprawdz(oForm) {
var sPSV=oForm.elements['sztuk'].value;
var oRegExp=/[^0-9]/;
if (sPSV==''||oRegExp.test(sPSV)) {
window.alert('Zła wartość w polu SZTUK');
return false;
};
};

Formularz w sekcji BODY:

<FORM ID="formularz" onsubmit="return fSprawdz(this);">
Podaj ilość sztuk:<BR>
<INPUT TYPE="TEXT" NAME="sztuk">
<INPUT TYPE="SUBMIT" VALUE="Wyślij">
</FORM>

Tuż przed wysłaniem formularza (onsubmit) wywoływana jest funkcja fSprawdz i przekazywany do niej obiekt-formularz (this). Funkcja odczytuje wartość pola "sztuk" i podstawia pod zmienną sPSV. Druga "zmienna" oRegExp jest wyrażeniem regularnym opisującym znaki, które będą szukane - w tym przypadku dowolne znaki inne niż cyfry.

Następuje sprawdzenie:
1. Czy łańcuch sPSV jest pusty?
...jeśli nie, to...
2. Czy łańcuch sPSV zawiera jakiś znak opisany wyrażeniem regularnym?

Jeśli któryś z warunków jest prawdziwy, następuje wyświetlenie alertu i powrót z funkcji z wartością false. Wartość ta jest następnie zwracana przez zdarzenie onsubmit co powoduje anulowanie wysyłania.

Jeśli w polu "sztuk" są same cyfry, funkcja fSprawdz nie zwraca żadnej wartości i wysyłanie jest kontynuowane. Oczywiście funkcję można rozbudować o sprawdzenie innych pól formularza.

Jest wystarczająco dokładnie?

Pozdrawiam
Paweł Rajewski
Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Postprzez lewar » 13 października 2003, o 20:52

:shock: Biję pokłony nad wiedzą twą. :shock:

Wszytko działa prawidłowo i nawet rozumiem dlaczego.

Wielkie dzięki. :D
lewar
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 167
Dołączył(a): 19 października 2002, o 16:07

Postprzez lewar » 13 października 2003, o 22:23

lewar
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 167
Dołączył(a): 19 października 2002, o 16:07

Postprzez Wydra707 » 14 października 2003, o 20:32

Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Postprzez lewar » 16 października 2003, o 06:45

lewar
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 167
Dołączył(a): 19 października 2002, o 16:07

Postprzez Wydra707 » 16 października 2003, o 21:15

Wydra707
Znawca tematu
Znawca tematu
 
Posty: 482
Dołączył(a): 1 października 2002, o 19:21

Postprzez lewar » 19 października 2003, o 15:47

Wielkie dzięki WYDRA :lol:

Dla moich potrzeb działa rewelacyjnie. :!:

Pozdrawiam.
lewar
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 167
Dołączył(a): 19 października 2002, o 16:07

blokada pola formularza przed literami!!

Postprzez bakaj » 10 stycznia 2005, o 21:43

bakaj
Zanim zapytam poszukam odpowiedzi
Zanim zapytam poszukam odpowiedzi
 
Posty: 5
Dołączył(a): 10 stycznia 2005, o 21:38

Postprzez bakaj » 11 stycznia 2005, o 10:29

czesc :!:

sprecyzuje troche moj problem:

Wasza funkcja pozwala wpisac do pola formularza dowolny
znak, i sprawdza czy nie jest to litera dopiero w momecie
wysylanie formu.
Ja chcialbym zeby pole bylo jakby zablokowane dla liter,
zeby mozna bylo wpisac tylko cyfry :!:

Jak ktos ma jakis pomysl to bardzo prosze o pomoc.

pozdrawiam i dziekuje :lol:
[/quote]
bakaj
Zanim zapytam poszukam odpowiedzi
Zanim zapytam poszukam odpowiedzi
 
Posty: 5
Dołączył(a): 10 stycznia 2005, o 21:38

Postprzez oscar » 11 stycznia 2005, o 20:44

Witam!

Do sprawdzenia czy wartość wpisana jest nie liczbą jest funkcja isNaN(). Np:

if(isNaN(document.twoj_formularz.pole_do_spr.value))
alert("To nie jest liczba !");

Wpisz to do funkcji sptrawdzającej formularz przed wysłaniem lub pod zdarzenie OnChange i masz alerta kiedy wpiszesz literę lub inną nie-liczbę :).

Pozdro, Oscar
oscar
Użytkownik forum
Użytkownik forum
 
Posty: 93
Dołączył(a): 9 lipca 2004, o 05:21

Postprzez bakaj » 11 stycznia 2005, o 23:02

bakaj
Zanim zapytam poszukam odpowiedzi
Zanim zapytam poszukam odpowiedzi
 
Posty: 5
Dołączył(a): 10 stycznia 2005, o 21:38

Postprzez bakaj » 12 stycznia 2005, o 18:47

witam !!

udalo mi sie wkoncu dojsc do celu!! :D

a kod przesylam bo moze sie komus przyda:

function CzyCyfra(e)
{
var jakiZnak = (navigator.appName == "Netscape") ? e.which : e.keyCode;

status = jakiZnak;
if(jakiZnak > 31 && (jakiZnak < 48 || jakiZnak > 57))//sprawdzam czy cyfra
{
if(jakiZnak == 188)//tu sprawdzam czy to przecinek
{
return true;
}
return false;
}
return true;
}

<input onKeyDown="return CzyCyfra(event)" type="text">

pozdrawiem :!:
bakaj
Zanim zapytam poszukam odpowiedzi
Zanim zapytam poszukam odpowiedzi
 
Posty: 5
Dołączył(a): 10 stycznia 2005, o 21:38

Następna strona

Powrót do Języki JavaScript i VBScript

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników

cron