ďťż

[JS] Problem z funkcją. Jak w temacie ;p

       

Podstrony


telcocafe

Witam,

Obecnie piszę skrypt rejestracji oparty na php i js, gdzie to drugie nastręcza mi pewne kłopoty. Otóż piszę własny skrypt sprawdzający wypełniony formulasz po stronie klienta i... tu jest problem. Skrypt wygląda tak:

<script language="Javascript" type="text/javascript"> <!-- function ValidateForm(fname, name) { if (fname.name.value == "") { alert("Wypełnij pole "name"."); fname.name.focus(); return false; } return true; } //--> </script>

Jest to bardzo okrojona wersja (do testów), która i tak nie działa. Generalnie chcę aby skrypt był uniwersalny dlatego pierwszy argumet to nazwa formularza, który ma sprawdzić a drugi to nazwa pola, które ma sprawdzić. Do funkcji (dla testu) odwołuję się w taki sposób:

<form name="Form" method="post" action="qwerty.php" id="Form" onsubmit="return ValidateForm(Form, imie)">

Tak więc jak podałem w argumetach skrypt ma mi sprawdzić formularz 'Form' a dokładnie pole 'imie'. Problem tkwi w tym, że mimo, iż pole 'imie' jest puste funkcja zwraza wartość 'true' i leci dalej, a przeciez celowo zostawiem puste pole 'imie', a skrypt ma ustrzec formularz przed wysłaniem spełniając warunek: if (fname.name.value == ""). Jednak jeśli przerobie funkcję w ten sposób, że nazwy pola nie bierze z argumentu podczas wywołania funcji tylko wpisze go samemu podczas sprawdzania konkretnego pola to... działa! Kod:

<script language="Javascript" type="text/javascript"> <!-- function ValidateForm(fname) { if (fname.imie.value == "") { alert("Wypełnij pole imie."); fname.imie.focus(); return false; } return true; } //--> </script>

Oraz odwołanie:

<form name="Form" method="post" action="qwerty.php" id="Form" onsubmit="return ValidateForm(Form)">

Czy ktoś wie dlaczego funkcja nie chce "ciągnąć" nazwy pola z argumetu? Jest na to jakieś rozwiązanie? Uprzedzam, że z js zapoznałem się... jakieś 10 min temu :E i zdążyłem przyswoić tyle wiedzy, ze wystarczyła mi do napisania dość fajnego validatora. Proszę o pomoc bo jakoś nic do głowy nie przychodzi... (Znajomość php + kilka tutoriali i się napisało...) a w między czasie potrzepie google :P

EDIT:

Problem rozwiązany.

<script language="Javascript" type="text/javascript"> <!-- function ValidateForm(fname, name) { if (fname.elements[name].value == "") { alert("Wypełnij pole "+name+"."); fname.elements[name].focus(); return false; } return true; } //--> </script>
Użytkownik andrzejt17 edytował ten post 28 lipiec 2009, 23:43


Proponuję inne rozwiązanie. Jako drugi argument można przekazać obiekt z nazwami pól i ewentualnie wskazówkami, co tam ma się znaleźć (liczba, tekst, itd.). Dla niektórych pól lepiej przeprowadzać oddzielną analizę (długość, zawartość).

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.