Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz - walidacja
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
rydlik
Witam wszystkich, przyszło mi się zmierzyć z następującym problemem.

Mam na stronie formularz:

  1. <form id="contact-frm">
  2.  
  3. <label for="username">login <strong class="asterisk">*</strong></label>
  4. <input name="username" id="username" type="text"><span id="status_login"></span>
  5.  
  6. <label for="mail">adres email <strong class="asterisk">*</strong></label>
  7. <input name="mail" id="mail" type="text"><span id="status_mail"></span>
  8.  
  9. <input type="submit" name="Submit" id="registerButton" value="Zarejestruj" />
  10.  
  11. </form>
  12.  



oraz kod, który odpowiedzialny jest za walidacje:

  1. $(document).ready(function() {
  2.  
  3.  
  4. $("#haslo2, #haslo1").change(function() {
  5. var haslo2 = $("#haslo2").val();
  6. var haslo1 = $("#haslo1").val();
  7. var msgbox = $("#status_haslo");
  8.  
  9. if(haslo1.length > 3) {
  10. if (haslo2 != haslo1){
  11. $("#haslo1").removeClass("green");
  12. $("#haslo1").addClass("read");
  13. $("#haslo2").removeClass("green");
  14. $("#haslo2").addClass("read");
  15. msgbox.html('<font color="Red"> hasła różne </font> ');
  16. $("#status_haslo1").html('');
  17. } else {
  18. $("#haslo1").removeClass("red");
  19. $("#haslo1").addClass("green");
  20. $("#haslo2").removeClass("red");
  21. $("#haslo2").addClass("green");
  22. msgbox.html('<img src="accept.png" align="absmiddle"> <font color="Green"> hasła poprawne </font> ');
  23. $("#status_haslo1").html('');
  24. }
  25. } else {
  26. $("#status_haslo1").html('<font color="#cc0000">hasło za krótke</font>');
  27. }
  28. });
  29.  
  30.  
  31. $("#mail").change(function() {
  32. var msgbox = $("#status_mail");
  33. var mail = $("#mail").val();
  34. var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  35. var litPatt = /^[2-9]{5,5}$/;
  36. var odp = regex.test(mail);
  37.  
  38. if (!odp) {
  39. msgbox.html('<font color="Red"> email nie poprawny </font>');
  40. } else {
  41. $("#status_mail").html('<img src="loader.gif" align="absmiddle">&nbsp;sprawdzanie dostępności...');
  42.  
  43. $.ajax({
  44. type: "POST",
  45. url: "check_username.php",
  46. data: "mail="+ mail,
  47. success: function(msg){
  48.  
  49. $("#status_mail").ajaxComplete(function(event, request){
  50. var d = msg;
  51. var str=msg.substr(0, 2);
  52.  
  53. if(str == 'OK') {
  54. $("#mail").removeClass("red");
  55. $("#mail").addClass("green");
  56. msgbox.html('<img src="accept.png" align="absmiddle"> <font color="Green"> email poprawny </font>');
  57.  
  58. } else {
  59. $("#mail").removeClass("green");
  60. $("#mail").addClass("red");
  61. msgbox.html('<font color="Red"> email jest już zajęty</font>');
  62. }
  63. });
  64. }
  65. });
  66.  
  67.  
  68. }
  69. });
  70.  
  71. $("#username").change(function() {
  72. var username = $("#username").val();
  73. var msgbox = $("#status_login");
  74.  
  75.  
  76. if(username.length > 3) {
  77. $("#status_login").html('<img src="loader.gif" align="absmiddle">&nbsp;sprawdzanie dostępności...');
  78.  
  79. $.ajax({
  80. type: "POST",
  81. url: "check_username.php",
  82. data: "username="+ username,
  83. success: function(msg){
  84.  
  85. $("#status_login").ajaxComplete(function(event, request){
  86. var d = msg;
  87. var str=msg.substr(0, 2);
  88.  
  89. if(str == 'OK') {
  90. $("#username").removeClass("red");
  91. $("#username").addClass("green");
  92. msgbox.html('<img src="accept.png" align="absmiddle"> <font color="Green"> dostępny </font> ');
  93.  
  94. } else {
  95. $("#username").removeClass("green");
  96. $("#username").addClass("red");
  97. msgbox.html(msg);
  98. //registerButton.style.display = "block";
  99. }
  100. });
  101. }
  102. });
  103.  
  104.  
  105.  
  106.  
  107. } else {
  108. $("#username").addClass("red");
  109. $("#status_login").html('<font color="#cc0000">login za krótki</font>');
  110. }
  111.  
  112.  
  113.  
  114. return false;
  115. });
  116.  
  117. });
  118.  



moja gorąca prośba: co dopisać i jak to zmodyfikować aby jeśli login i mail bedą juz po walidacji czyli poprawne, po wciśnięciu "submit" formularza strona się nie przeładowała a pola mail i login zapisały się w bazie
com
yy co jeszcze raz? ale nie wiem ale z tego co mam wrażenie to nie ten dział bo zapis do bazy danych to php, chyba że serwer node.js ale z kodu to nie wynika...
rydlik
nie nie, dział dobry bo nie chodzi o zapis do bazy. Może faktycznie trochę nie logicznie to napisałem.

jeszcze raz: do tego kodu strony, który zamieściłem powyżej, chciałbym napisać skrypt, który po kliknięciu w przycisk 'submit' sprawdzi wszystkie pola formularza - czy zostały podane poprawnie ( może to być jakaś zmienna kontrolna w walidacji z każdego z elementów formularza), zależy mi aby to się stało bez przeładowania strony
com
no to w takim razie co masz napisane? co robi ten Twój Ajax?
rydlik
witam, może spróbuje przedstawić problem bardziej obrazowo:

1) posiadam formularz z polem takimi jak:

- login

2) przycisk subbmit wywołuje funkcje register, kod formularza:

  1. <form action="java script:register();" id="contact-frm">
  2.  
  3. <label for="username">login <strong class="asterisk">*</strong></label>
  4. <input name="username" id="username" type="text"><span id="status_login"></span>
  5.  
  6. <input type="submit" name="Submit" id="registerButton" value="Zarejestruj" />
  7.  
  8. </form>


3) login dzięki poniższej funkcji sprawdzany jest automatycznie czy nie jest już zajęty:

  1. $(document).ready(function() {
  2.  
  3. $("#username").keyup(function(event){
  4.  
  5. var msgbox = $("#status_login");
  6. var username = $("#username").val();
  7.  
  8. if(username.length > 3) {
  9. $("#status_login").html('<img src="loader.gif" align="absmiddle">&nbsp;sprawdzanie dostępności...');
  10.  
  11. $.ajax({
  12. type: "POST",
  13. url: "check_username.php",
  14. data: "username="+ username,
  15. success: function(msg){
  16.  
  17. $("#status_login").ajaxComplete(function(event, request){
  18. var d = msg;
  19. var str=msg.substr(0, 2);
  20.  
  21. if(str == 'OK') {
  22. $("#username").removeClass("red");
  23. $("#username").addClass("green");
  24. msgbox.html('<img src="accept.png" align="absmiddle"> <font color="Green"> dostępny </font> ');
  25.  
  26. } else {
  27. $("#username").removeClass("green");
  28. $("#username").addClass("red");
  29. msgbox.html(msg);
  30. //registerButton.style.display = "block";
  31. }
  32. });
  33. }
  34. });
  35. } else {
  36. $("#username").addClass("red");
  37. $("#status_login").html('<font color="#cc0000">login za krótki</font>');
  38. }
  39.  
  40. });
  41. });


4) kod funkcji register (wywoływana po kliknięciu subbmit):

  1. function register(){
  2.  
  3. var msgbox = $("#statuss");
  4. msgbox.html(msg);
  5. }



5) moja gorąca prośba, jak te kody przerobić aby treść funkcji register wykonywała się dopiero po sprawdzeniu czy login jest prawidłowy
com
no to nie wywołuj jej jak wysyłasz formularz tylko, dopiero w miejscu gdzie on się sprawdzi i zwróci poprawną wartość, czyli jak mniemam tutaj:

[JAVASCRIPT] pobierz, plaintext
  1. if(str == 'OK') {
  2. $("#username").removeClass("red");
  3. $("#username").addClass("green");
  4. msgbox.html('<img src="accept.png" align="absmiddle"> <font color="Green"> dostępny </font> ');
  5. register();
  6. }
[JAVASCRIPT] pobierz, plaintext


Oczywiście o ile dobrze Cię zrozumiałem, bo dajesz kod to dobrze, tylko trudno się w treści doszukać tego z czym masz problem smile.gif
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.