Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/js] Znaczniki <form> i konflikt z ajax'em
Forum PHP.pl > Forum > Przedszkole
zezu
Dlaczego tak się dzieję : Mam formularz w którym każe z pól jeśli zachodzi dla niego onBlur jest walidowane (dzięki ajaxowi) i obok pola pojawia się znaczek informujący czy jest ok czy nie.

Tak to ma miejsce jeśli formularza nie ma w znacznikach <form> , wtedy ajax nie działa (nie waliduje).

Nie wiem jak to obejść , pozdrawiam (ps.nie chcę wysyłać formualrza ajaxem)
yaro
moze pokaż kod.
mike
1. To przez to że obramowanie jest zielone.

2. Proszę poprawić temat wątku.
Nie jest zgodny z zasadami panującymi na forum Przedszkole.


P.S.
Głupia odpowiedź, co?
A niby co mamy Ci powiedzieć jak nie pokazałeś kodu.
Jak Ci się auto zepsuje to prowadzisz je do warsztatu czy idziesz sam i tylko o nim opowiadasz?
Cysiaczek
Cytat
Tak to ma miejsce jeśli formularza nie ma w znacznikach <form> , wtedy ajax nie działa (nie waliduje).

Czyli prawdopodobnie za pomocą JS odnosisz się do pola, które walidujesz przez document.forms[0].nazwa_pola.value
Co oznacza, że jeśli masz znaczniki form, to wsio działa, jak je usuniesz, to nagle skrypt się gubi. Oczywiście to spekulacja, bo faktycznie może to być wina zielonego obramowania jak już sugerował mike_mech

Pozdrawiam.
zezu
Sorry panowie - wdarł się błąd ... jeśli są znaczniki form skrypt nie działa (nie waliduje , a faktycznie ajax powinien zbierać wartości pół po ich ID). Jeśli znaczniki mam usunięte skrypt waliduje - a wystaczy wpisać tylko <form> i </form> i nie działa niestety.

Chciałem uniknąć wklejenia kodu bo wydaje mi się że dodanie znaczników <form> nie powinno zmieniać dzałania javascriptu (mam nadzieję że się nie mylę).

Kod formularza
  1. <tr>
  2. <td class="bold" align="right">Twój nick : </td>
  3. <td align="left"><input type="text" class="login2" name="nick" id="nick" onClick="nick()" ></td>
  4. <td class="h" align="right"> (max 12 znaków) </td>
  5. <td align="left" width="110px" class="red1"><div id="1"> </div></td>
  6. </tr>
  7. <tr>
  8. <td class="bold" align="right">Twój email : </td>
  9. <td align="left"><input type="text" class="login2" name="email" id="email" onBlur="email()" ></td>
  10. <td class="h1" align="right"> (max 25 znaków) </td>
  11. <td align="left" width="110px" class="red1"><div id="2"> </div></td>
  12. </tr>
  13. </form>


Kod funkcji dla advAjax
  1. function email(){
  2. $email = document.getElementById('email').value;
  3. $_div=2;
  4.  
  5. advAJAX.setDefaultParameters({
  6. onInitialization : function(obj) { document.getElementById(obj.tag).innerHTML = "Czekaj !"; },
  7. onLoading : function(obj) { document.getElementById(obj.tag).innerHTML = "Sprawdzam !"; },
  8. onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = "" + obj.responseText; },
  9. onError : function(obj) { document.getElementById(obj.tag).innerHTML = "Blad !!!"; }
  10. });
  11. advAJAX.get({ url: "./s/c_email.php?email="+$email, tag: $_div });
  12.  
  13. }


Sktypt php sprawdzający ma tylko zwrócić jedna z dwóch wartości i jest poprawny
Obramowanie mam niebieskie.
yaro
Czy twój tag (domyślam się że to jest div) ma id=2?

Wydaje mi się że id powinien zaczynać się od litery, a nie od cyfry.

I jeszcze nie zabardzo rozumiem dlaczego użyłeś advAJAX.setDefaultParameters
zamiast wrzucić to wyszystko do advAJAX.get, bo przecież nie wykonujesz naraz kilku połączeń.
zezu
Przepisałem na advAJAX.get , ale dalej nie działa questionmark.gif? Czy napisałem coś nie tak ? Jakaś nietypowa konstrukcja ? Nazwy divów zmieniłem na literowe.
yaro
A może przydałoby sie wpisać action i method do form
zezu
Zanim dałem pierwszego posta ogoliłem kod z czego się dało, dlatego nie było typu i skryptu docelowego ... ale sprawdziłem dodając to i dalej bez efektu.

btw.pierwszy raz korzystam z ajaxa do walidacji submitowanego formularza ale wydaje mi się że jego zachowanie nie powino od tego zależeć czy walidujemy formularz czy inne pola.

pozdr , wszelkie podpowiedzi mile widziane - nie chcę rezygnowac z tego rozwiązania (na życzenię moge pokazać kod sad.gif ) .
jarrod
Cytat(zezu @ 26.10.2006, 18:18:17 ) *
  1. <div id="1"> </div>
  2. <div id="2"> </div>

id nie może zaczynać się od znaków zpecjalnych ani od liczb. Dozwolone pierwsze znaki to: [a-zA-Z0-9_].

Zmień id na np d_1 i d_2 i powinno zadziałać
zezu
Dwa posty wyżej jest info o tym że zmieniłme nazwy divów...dziwna niezrozumiała dla mnie sprawa...
mls
Tak przy okazji, zalecałbym inne nazewnictwo w id i inne w nazwie funkcji. Sam już miałem taki problem, że coś nie działało tylko dlatego, że funkcja nazywała się tak samo jak wartość jednego z id...
zezu
Ważny komunikat : Nazwy pól formularza , id tych pól oraz funkcje nie powinny być takie same !

Dzięki mls ! Już jest ok !
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.