Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Sprawdzanie wieku użytkownika na podstawie PESEL
Forum PHP.pl > Forum > Przedszkole
adamt87
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. }
Twist
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()
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.