Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Sprawdzanie wieku użytkownika na podstawie PESEL
adamt87
post 20.01.2015, 11:24:16
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 1
Dołączył: 20.01.2015

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


Witam wszystkich!
Na wstępie chciałbym zaznaczyć, że dopiero zaczynam przygodę z JS, więc proszę o wyrozumiałość smile.gif

Chciałbym Was poprosić o opinię, porady odnośnie skryptu, który napisałem (przerobiłem) na podstawie kodu, który udostępnił buliq http://forum.php.pl/index.php?s=&showt...st&p=886957

PESEL jest pobierany z formularza, który wypełnia użytkownik.
var y = document.forms["formularz"]["pesel"].value; - jeśli dobrze rozumiem, to ta część zwraca mi pesel w postaci string. Dalej wydzielam odpowiednie części tego ciągu (dla dnia, miesiąca oraz roku). Nie ma problemu jeśli od tych "wyciągniętych" danych chcę coś odjąć (otrzymuję oczekiwany wynik). Jednak jeśli chcę coś dodać, to zamiast matematycznej operacji, po prostu łączy mi oba ciągi znaków (np. otrzymałem 87 rok dodaję do tego 1900 i w wyniku otrzymuję 871900 zamiast 1987). Stąd w moim skrypcie takie obejście w postaci mnożenia przez (-1). Generalnie skrypt działa tak jak chcę (nie sprawdziłem jeszcze osób urodzonych po 2000 roku, lecz to nie istotne), ale wiem, że nie powinien on wyglądać w ten sposób. Moje pytanie/prośba dotyczy tego jak ten skrypt ładnie jeszcze przerobić, żeby to miało "programistyczne" ręce i nogi, bo sam fakt, że to działa zadowala mnie tylko częściowo. Pozdrawiam i z góry dzięki za wszelkie udzielone porady, sugestie.

  1. function sprawdzWiek(){
  2. var y = document.forms["formularz"]["pesel"].value;
  3. var miesiac = y.substr(2,2)-1;
  4. var dzien = y.substr(4,2);
  5. var rok = (-y.substr(0,2)-1900)*(-1);
  6. if ( miesiac>=21 && miesiac<=32 ) // urodzeni po 2000
  7. {
  8. rok = (-y.substr(0,2) - 2000)*(-1);
  9. miesiac-= 21;
  10. }
  11. var time = new Date( rok, miesiac, dzien);
  12. var tm = time.valueOf();
  13. var t = Date.parse("mm, dd, yyyy"); // wprowadzić datę rozpoczęcia głosowania pomniejszoną o minimalny wiek osoby głosującej, gdzie mm - miesiąc, dd - dzień, yyyy - rok pomniejszony o minimalny wiek
  14. var wiek = t-tm;
  15. if (wiek<=0){
  16. alert("Głosować mogą osoby powyżej xx roku życia.");
  17. return false;
  18. }// Warunek "<0" jeśli może być ukończone xx lat dokładnie w dniu rozpoczęcia głosowania lub warunek "<=" jeśli xx lat musi być ukończone przynajmniej dzień wcześniej
  19. }


Ten post edytował adamt87 20.01.2015, 11:27:04
Go to the top of the page
+Quote Post
Twist
post 20.01.2015, 23:48:06
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 11
Dołączył: 12.10.2008
Skąd: Dublin

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


JavaScript jest typowany dynamicznie i value wpisane przez uzytkownika jest rozpoznawane jako to tutaj string a nie number.
Innymi slowy - kod nie dodaje 87 do 1900 tylko "87" do "1900".

Aby uzyc value jako number, mozesz uzyc parseInt()
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:21