ďťż
Podstrony
|
telcocafeWitam,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ść). |
|||
Sitedesign by AltusUmbrae. |