Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Sprawdzanie, czy dwa pola mają taką samą wartość
malolat_ps
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 12.10.2008

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


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ą (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Gdyby ktoś mi podrzucił rozwiązanie byłbym bardzo wdzięczny (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jeżeli macie jakieś linki, bądź gotowe rozwiązanie również bardzo by mi się przydało (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
malolat_ps
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 12.10.2008

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


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ć? (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)  Ta funkcja, jak się łatwo domyśleć nie działa. 
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
malolat_ps
post
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 12.10.2008

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


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? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


No i właśnie tego nie rozumiem, tj. nie mam nawet zalążka pomysłu jak to zrobić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował malolat_ps 17.04.2009, 18:09:12
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
gcdreak
post
Post #7





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


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.
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A do muchy będziesz strzelał z armaty?
Go to the top of the page
+Quote Post
malolat_ps
post
Post #9





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 12.10.2008

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


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?
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A wiesz, czym się różni łańcuch tekstowy od zmiennej? Tym, że ma uszy (cudzysłowy).
Go to the top of the page
+Quote Post
malolat_ps
post
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 12.10.2008

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


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ł.
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Przecież miałeś:
Kod
if(haslo.value != powtorz_haslo.value)

(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
malolat_ps
post
Post #13





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 12.10.2008

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


Ok, zrobiłem wszystko (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jeszcze raz dzięki
Go to the top of the page
+Quote Post

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: 22.08.2025 - 22:41