Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Sprawdzanie, czy dwa pola mają taką samą wartość
Forum PHP.pl > Forum > Przedszkole
malolat_ps
Witam!

Mam w swoim skrypcie sprawdzanie formularza w js. Chciałbym też sprawdzić, czy pole hasło i powtórz hasło mają taką samą wartość. Ale nie wiem w jaki sposób to zrobić, bo js jest dla mnie czarną magią smile.gif Gdyby ktoś mi podrzucił rozwiązanie byłbym bardzo wdzięczny smile.gif

Chciałbym również przy sprawdzaniu formularza zaznaczać czerwoną obwódką błędnie wypełnione pola. Ponoć w JS jest to wykonalne, jednak nie mogę nic znaleźć na ten temat winksmiley.jpg Jeżeli macie jakieś linki, bądź gotowe rozwiązanie również bardzo by mi się przydało smile.gif

Pozdrawiam
erix
Cytat
Chciałbym również przy sprawdzaniu formularza zaznaczać czerwoną obwódką błędnie wypełnione pola. Ponoć w JS jest to wykonalne, jednak nie mogę nic znaleźć na ten temat Jeżeli macie jakieś linki,

Jeśli warunek się nie zgadza, dodajesz po prostu jakąś klasę CSS do pola.

Cytat
Chciałbym też sprawdzić, czy pole hasło i powtórz hasło mają taką samą wartość.

Porównujesz value pola z value potwierdzenia.

Cytat
bądź gotowe rozwiązanie również bardzo by mi się przydało

Wklep sobie javascript form validator.
malolat_ps
Znalazłem ten javascript form validator, ale nie widzę w nim funkcji zaznaczania błędnie wypełnionych pól. Jeżeli to tam jest to mógłbyś mnie trochę lepiej pokierować? smile.gif  Co do sprawdzania tych haseł to zrobiłem taką funkcję:

Kod
function sprawdzHaslo()
{
  var haslo = document.forms['form'].haslo;
  var powtorz_haslo = document.forms['form'].powtorz_haslo;
  
  if(haslo.value != powtorz_haslo.value)
  {
    alert('Podane hasła różnią się od siebie!');
    return false;
  }
  else
  {
    return true;
  }
}
zdaję sobie sprawę, że może mieć ona masę błędów, jednak w js jestem totalnym laikiem smile.gif  Ta funkcja, jak się łatwo domyśleć nie działa. 
erix
Ok, a wywołujesz to jakoś?

Cytat
Jeżeli to tam jest to mógłbyś mnie trochę lepiej pokierować?

To znaczy? Napisałem o dodawaniu klasy, nie? winksmiley.jpg
malolat_ps
Cytat(erix @ 17.04.2009, 18:03:03 ) *
Ok, a wywołujesz to jakoś?

Mam to wywołane w taki sposób:
Kod
<form action="" method="post" onsubmit="return testFormularza.testuj(this); return sprawdzHaslo()">



Cytat(erix @ 17.04.2009, 18:03:03 ) *
To znaczy? Napisałem o dodawaniu klasy, nie? winksmiley.jpg


No i właśnie tego nie rozumiem, tj. nie mam nawet zalążka pomysłu jak to zrobić smile.gif
erix
Cytat
Mam to wywołane w taki sposób:

Nie możesz używać 2x return. Musisz połączyć obie funkcje w jedną.

Cytat
No i właśnie tego nie rozumiem, tj. nie mam nawet zalążka pomysłu jak to zrobić

Google: className.
gcdreak
Zamiast szukać gotowych rozwiązań i rozpracowywać jak działają zainteresuj się jQuery. Jeśli chcesz jakąś pomoc dotyczącą konkretnego przykładu to pisz.
erix
A do muchy będziesz strzelał z armaty?
malolat_ps
Jestem coraz bliżej rozwiązania, ale nadal coś jest nie tak. Mój kod JS na chwilę obecną wygląda tak:

Kod
testFormularza={
  rodzajePol:{
    niepuste:[/.+/,'Proszę wypełnić pole'],
    email:[/^[\w\.-]{2,}@[\w\.-]+\.[a-z]{2,5}$/,'Proszę podać prawidłowy adres e-mail'],
    liczbacalkowita:[/^\d+$/,'Prawidłową wartością tego pola jest liczba całkowita'],
    liczbarzeczywista:[/^(\d+|\d+,\d+)$/,'Proszę podać liczbę rzeczywistą (można użyć przecinka)'],
    data:[/^\d+\-\d+\-\d{4}$/,'Proszę wpisać datę w formacie DD-MM-RRRR (numer dnia-numer miesiąca-rok) np. 23-02-2003'],
    kodpocztowy:[/^\d{2}\-\d{3}$/,'Proszę podać kod pocztowy np. 06-600'],
    m20m100:[/^.{20,100}$/,'Proszę wpisać nie więcej niż 100 znaków, ale też nie mniej niż 20.'],
    duzelitery:[/^[A-Z]+$/,'Proszę używać wyłšcznie dużych liter w tym polu'],
    url:[/^http\:\/\/.+\.[a-z]{2,5}$/i,'Proszę podać prawidłowy adres strony www np. http://strona.pl'] 
  },
  testuj:function(f){
    var i,rodz;
    for(i=0;i<f.elements.length;i++){
      E=f.elements[i];
      if(rodz=this.rodzajePol[E.getAttribute('rodzajpola')])
        if(!rodz[0].test(E.value)){
          E.focus();
          E.select();
          var el = E.getAttribute('id');
          el.className = formularz_czerwona;
          alert((E.getAttribute('komunikat')||rodz[1]));
          return false;          
        }
    }
    return true;
  }
}



Za zaznaczanie błędnego pola czerwoną obwódką odpowiadają te dwie linie:

Kod
var el = E.getAttribute('id');
el.className = formularz_czerwona;
Niestety, gdy ta druga linijka znajduje się w kodzie, dalsza część tego kodu nie jest już wykonywana, tzn. nie wyświetla się alert i funkcja nie zwraca false, tylko przechodzi do następnej strony. Próbowałem już na wszelkie sposoby, jednak nadal nie mam rozwiązania. Czy jestem chociaż na właściwym tropie?
erix
A wiesz, czym się różni łańcuch tekstowy od zmiennej? Tym, że ma uszy (cudzysłowy).
malolat_ps
ok, zrobiłem tą zmianę koloru obramowania, rzeczywiście umknęły mi te cudzysłowy, ogromne dzięki za nakierowanie. Jednak dalej nie jestem w stanie dorobić do tej funkcji sprawdzania haseł.
erix
Przecież miałeś:
Kod
if(haslo.value != powtorz_haslo.value)

winksmiley.jpg
malolat_ps
Ok, zrobiłem wszystko smile.gif  Ogromne dzięki za podpowiedzi i sorki, że tyle zawracałem głowę. Czasami człowiek sam nie wpadnie na najprostrze rozwiązania, a jak ktoś inny nakieruje od razu lepiej idzie praca smile.gif Jeszcze raz dzięki
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.