Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][JQuery]Sprawdzanie numeru komórkowego, i aktywacja dodatkowych pól
evolucja
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Mam formularz z 4 polami:
Telefon, Telefon dodatkowy, Checkbox1, Checkbox2

Czy ma ktoś klasę sprawdzającą numer komórkowy? Chodzi mi o to, aby w przypadku wpisania w pole Telefon lub Telefon dodatkowy numeru komórkowego(nie stacjonarnego)uaktywniły się oba checkboxy.

Musiało by to sprawdzać czy numer pasuje do wzorca: '505505505' lub '48505505505'

Będę wdzięczny za wskazówki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie można na pałę wycinać 48! To kierunkowy na mazowieckie!
1. Trzeba wywalić wszystko co nie jest cyfrą.
2. Sprawdzić długość ciągu.
3. Jeśli ciąg ma 13 cyfr to tniemy 2 pierwsze i następne 11 zapisujemy do dalszej obróbki. Jeśli 2 pierwsze to '00' idziemy do kroku 4. Jeśli nie - to nie jest prawidłowy numer telefoniczny.
4. Jeśli ciąg ma 11 cyfr to tniemy 2 pierwsze i pozostałe 9 to numer. Możemy owe 2 pierwsze wykorzystać do określenia kraju. Jeśli nie jest on w tablicy, która zawiera kierunkowe do innych krajów - to nie jest prawidłowy numer telefoniczny międzynarodowy. Jeśli jest to 48 -> idziemy do kroku 5, jeśli nie to koniec bo chyba nie będziesz walidował numerów dla każdego kraju z osobna (IMG:style_emoticons/default/biggrin.gif)
5. Jeśli ciąg ma 9 cyfr tniemy 2 pierwsze i porównujemy z kierunkowymi miast by określić czy jest to stacjonarny. Jeśli wyjdzie prawda to mamy do czynienia ze stacjonarnym. Możemy też wyciąć 3 pierwsze i porównać do numerów początkowych sieci komórkowych. Jeśli tutaj trafimy to wiemy, że mamy do czynienia z komórką.

Co jest fajne w tym algorytmie? Kaskadowość (IMG:style_emoticons/default/winksmiley.jpg) Kto nie wie o co mi chodzi niech sprawdzi jak działa switch gdy żaden z case nie posiada break umieszczając w każdym z case jakieś echo (IMG:style_emoticons/default/winksmiley.jpg) Tutaj też to można zastosować.

Tylko zwróć uwage na jedno... W tej funkcji nie możesz zwracać wartości true i false jedynie. Bo numerów międzynarodowych nie możesz tak podzielić. To powinna być funkcja w stylu validPhone, która zwraca: false dla errora, international dla międzynarodowego, polStat dla polskiego stacjonarnego i polMob dla polskiej komórki lub jakiś odpowiednik tego, przykładowo numeryczny 0 -error, 1 - międzynarodowy i tak dalej.

Bym zapomniał. Po co masz szaleć z wyrażeniami regularnymi co sugeruje pablo, skoro możesz wykorzystać prostsze in_array?
Powód edycji: [thek]:
Go to the top of the page
+Quote Post
pablo89pl
post
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


Cytat(thek @ 20.08.2010, 13:18:38 ) *
Nie można na pałę wycinać 48! To kierunkowy na mazowieckie!

Ale przy numerze +48481112223
wycinajac "48" 2 razy, zostaje CI 7 cyfr, i automatycznie numer jest odrzucony bo nie jest komórkowym....jeśli raz to i tak jest odrzucony bo w w/w preze mnie sposobie realizacji tego problemu są porównywane równiez i te początki...

@thek: pewnie że można (IMG:style_emoticons/default/smile.gif) rozwiązań jest multum, przedstawione przeze mnie to tylko opcja

Wydaje mi się żę rozwiązanie z wyr. regularnym będzie szybsze niż wycinanie znaków, sprawdzanie tablic...a na pewno krótsze (IMG:style_emoticons/default/smile.gif)

Ten post edytował pablo89pl 20.08.2010, 12:28:30
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 11:36