Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][jQuery.validate] Własna metoda walidacji
Forum PHP.pl > Forum > Przedszkole
fenix.robi
Witam, od 2 godzin próbuje dodać własną metodę w jquery.validate

o dziwo przy zalogowanym użytkowniku pobiera mi i zwraca poprawne dane ajaxem, natomiast przy niezalogowanym użytkowniku tak jakby w ogóle ajax źle pobierał dane (ale to pewno moje przeoczenie/zmeczenie),

wiec tak trochę skryptu

  1. <!--pole formularza wygenerowanego przez cakePHP--><div class="input text"><label for="UserLogin">Login<span class="gwiazdka">*</span>:</label><input name="data[User][login]" type="text" class="{validate:{ required: true, minlength: 4 }}" maxlength="20" value="" id="UserLogin" /><span id="after_UserLogin"></span></div>
  2.  
  3. <!--JS-->
  4.  
  5. $(document).ready(function(){
  6. //dodanie metody sprawdzającej czy login/email jest już w bazie
  7. $.validator.addMethod(
  8. "sprawdz",
  9.   function(value) {
  10. $.ajax({
  11. type: "POST",
  12. url: '/users/sprawdz_ajax/login/' + value,
  13. async: false,
  14. success: function(data){
  15. alert(data);
  16. if(data == 1){//1 = true
  17. return true;
  18. }else{// !1 = false
  19. return false;
  20. }
  21. }
  22. });
  23. },
  24. "Podane wyrażenie juz istnieje."
  25. );
  26.  
  27. $("#rejestracja").validate({
  28. meta: "validate",
  29. errorElement: "span",
  30. highlight: function(element, errorClass) {
  31. //$(element.form).find("span[id=after_" + element.id + "]").addClass(errorClass).removeClass(validClass);
  32. $(element.form).find("span[id=after_" + element.id + "]").addClass(errorClass);
  33. },
  34. unhighlight: function(element, errorClass) {
  35. //$(element.form).find("span[id=after_" + element.id + "]").removeClass(errorClass).addClass(validClass);
  36. $(element.form).find("span[id=after_" + element.id + "]").removeClass(errorClass);
  37. $(element.form).find("span[id=after_" + element.id + "]").text("Poprawne");
  38. }
  39. });
  40.  
  41.   $("#UserLogin").rules("add", { sprawdz: true });
  42.  
  43. });
 




Utworzyłem konto L: login H: zaq

http://rj.zgo.pl/users/rej2

możliwość odpalenia recznie skryptu ajax

http://rj.zgo.pl/users/sprawdz_ajax/login/login //istnieje w bazie

http://rj.zgo.pl/users/sprawdz_ajax/login/login_zly //nie istnieje w bazie

@hehe będzie trzeba zmienić parametry@

Apropo jeszcze mnie irytują dwa małe błędy

2. w trakcie pierwszej walidacji do klasy error wysiedlają się dwie ikonki po boku tekstu, następnie po kolejnej walidacji znikają, nie wiem czym to jest spowodowane

3. Dwie linijki zakomentowane przy :unhighlight i :highlight a dokładnie nie chce mi dodać klasy 

wyświetla błąd Błąd: validClass is not defined








askone
Hej

Chciałem sprawdzić co i jak, ale otrzymałem błąd:

"Error: The requested address '/users/home' was not found on this server."

Pozdrawiam
fenix.robi
Cytat(fly474 @ 24.01.2010, 08:49:33 ) *
"Error: The requested address '/users/home' was not found on this server."


Po zalogowaniu przenosi właśnie do tego widoku, wystarczy wpisać /users/rej2

@edit przed chwilą zauważyłem ze jak nie jestem zalogowany to wyświetla mi błąd: Błąd: $.data(element.form, "validator") is undefined a gdy zaloguję sie to ten bład znika ;/


FireBug

$.data(element.form, "validator") is undefined
rules()            jquery...date.js (wiersz 121)
(?)()               rej2 (wiersz 88)
ready()           jquery-1.4.js (wiersz 387)
DOMContentLoaded)       jquery-1.4.js (wiersz 722)
var settings = $.data(element.form, 'validator').settings;   jquery...date.js (wiersz 121)
dante90
Cytat
errorElement: "span"

tu przypisujesz element dla erroru który doda classe ale w bibliotece a ty dodatkowo dodajesz ją w highlight
Cytat
highlight: function(element, errorClass) {
//$(element.form).find("span[id=after_" + element.id + "]").addClass(errorClass).removeClass(validClass);
$(element.form).find("span[id=after_" + element.id + "]").addClass(errorClass);
},
unhighlight: function(element, errorClass) {
//$(element.form).find("span[id=after_" + element.id + "]").removeClass(errorClass).addClass(validClass);
$(element.form).find("span[id=after_" + element.id + "]").removeClass(errorClass);
$(element.form).find("span[id=after_" + element.id + "]").text("Poprawne");
}

fenix.robi
@dante dzięki, pomogło na 2, lecz nie dodaje mi jakoś klasy valid (validClass) czyli pkt 3 (tzn powinna się pokazać ikonka valid.gif)

Ten pierwszy błąd mnie prześladuje, nie mogę dodać do rules bo atrybut name muszę zostawić w takiej postaci jakiej jest, wrzuciłem do biblioteki funkcję

  1. //funckja sprawdzająca czy login/email znajduje się w bazie
  2. sprawdz: function(value, element, param){
  3. $.ajax({
  4. type: "POST",
  5. url: '/users/sprawdz_ajax/'+ param +'/' + value,
  6. success: function(data){
  7. alert(data);
  8. if(data == 1){//1 = true
  9. return true;
  10. }else{// !1 = false
  11. return false;
  12. }
  13. }
  14. });
  15. }


oraz komunikat do mesege, lecz zawsze czy zwraca 0 czy 1 zawsze jest błąd formularza

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.