Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mintAjax] Walidacja danych z formularza, Problem...
iMax
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 4.07.2006

Ostrzeżenie: (10%)
X----


Witam. Zaczynam przygoda z AJAXEM a konkretnie mintAjaxem, i mam pewien problem.
Postanowilem sobie zrobic walidacje wybranych pol w formularzu. Uzylem onChange, czyli gdy uzytkownik wpisze cos, a bedzie to zle to wyswietli sie blad nad formuarzem w divie.

js
  1. <?php
  2. function check_profile(pole, div)
  3. { req = mint.Request();
  4.  req.method = "post";
  5.  req.AddParam(pole, $(pole).value);
  6.  req.OnSuccess = function ()
  7.  { 
  8.  document.getElementById(div).innerHTML = req.responseText;
  9.  }
  10.  req.Send("profile.php?action=save");
  11. }
  12. ?>


html (jeszcze ze smartami)
  1. <form action="profile.php?action=save" method="post" name="form" id="form">
  2. <div class="page_content">
  3. <div class="page_title">Edycja profilu</div>
  4. <div class="edit_profile">
  5. {foreach from=$profile item=pr}
  6. <div class="section">Strona</div>
  7. <table width="100%" cellpadding="1" cellspacing="2">
  8. <tr>
  9. <td width="38%">Email:</td>
  10. <td width="62%">
  11. <div id="c_email"></div>
  12. <input name="email" type="text" id="email" value="{$pr.email}" size="22" maxlength="60" onChange="check_profile('email', 'c_email')" />
  13. </label>
  14. <div id="c_email_e"></div></td>
  15. </tr>
  16. <tr>
  17. <td>Nowe hasło:</td>
  18. <td>
  19. <div id="c_pass"></div>
  20. <input name="pass1" type="password" id="pass1" size="22" maxlength="50" onChange="check_profile('pass1', 'c_pass')"/>
  21. </label></td>
  22. </tr>
  23. <tr>
  24. <td>Powtórz hasło:</td>
  25. <td><input name="pass2" type="password" id="pass2" size="22" maxlength="50" onChange="check_profile('pass2', 'c_pass')"/></td>
  26. </tr>
  27. </table>
  28. ........


Niestety nie mam teraz dostepu do pliku php, ale jest on na 100%, bo bez ajaxa dzialal jak nalezy. Sprawdza na zasadzie if(cos tam zle) echo blad.
A wogole caly problem tkwi w tym, ze czy wypelnie pole email czy nie, to zawsze gdy zejde nizej i wypelnie hasla i zgadzaja sie ze soba to w divie od bledow z hasel wyskakuje moj blad: "Nie podano emaila" (sprawdza na zasadzie if(!isset($_POST['email'])) echo Nie podano emaila), chodz ten blad nie ma nic wspolnego z haslami (tak samo jest jak podam inne pola). W js przesylam tylko pole, wiec na moj chlopski rozum w skrypcie php powinno sie wykonac to gdzie jest $_POST['...'], a wiec skad tam inne pole. Jak na moje oko to wina js. Jesli tak, to jak go zmodyfikowac, zeby sprawdzal tylko w php gdzie jest bezposrednie odwolanie do danego pola.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Validację w PHP przeprowadzasz tak czy inaczej, to jest oczywiste.

Chodziło mi o to, że nie ma sensu odpytywać ajaxem skryptu php sprawdzającego poprawność pola, gdy jest puste. Bo co masz sprawdzac?? pusty ciąg? Oraz żeby nie robić tego przy zdarzeniu onChange tylko np onBlur.

Ja to widzę tak:
- sprawdzanie ajaxem czy dane w wpisanym polu sa ok, ale dopiero po jego opuszczeniu przy warunku ze pole nie jest puste
- sprawdzanie js czy pole jest puste (minimalna ilosc znakow) przed wyslaniem formularza i przed sprawdzaniem go ajaxem
- jesli wszystkie wymagane sa wypelnione, spelniaja podstawowe warunki walidacji w js wtedy mozna wyslac formularz
- ale i tak na koniec sprawdzenie pobranych danych w php!
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 15:54