Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript]Błąd too much recursion w jquery
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie,
mam taki kod:
  1. <script type="text/javascript">
  2. function email_validate(src)
  3. {
  4. var reg = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  5. return reg.test(src);
  6. }
  7.  
  8. function sprawdz1(form)
  9. {
  10. var tekst = '';
  11. if ($(form).find('input[name="email"]').val() == "") {
  12. tekst = tekst + "- email<br/>";
  13. }
  14. if ($(form).find('input[name="pass"]').val() == "") {
  15. tekst = tekst + "- hasło <br/>";
  16. }
  17. if ($(form).find('input[name="pass2"]').val() == "") {
  18. tekst = tekst + "- powtórne hasło <br/>";
  19. }
  20. if ($(form).find('textarea[name="login"]').val() == "") {
  21. tekst = tekst + "- login <br/>";
  22. }
  23. if ($(form).find('input[name="pass"]').val() != $(form).find('input[name="pass2"]').val()) {
  24. tekst = tekst + "- pole hasło różni się od pola z powtórzonym hasłem <br/>";
  25. }
  26. if ($(form).find('input[name="email"]').val() != "") {
  27. if (email_validate($(form).find('input[name="email"]').val()) == false) {
  28. tekst += "- błędny format adresu email <br/>"
  29. }
  30. }
  31. if ($(form).find('input[name="email"]').val() != "") {
  32. var random = Math.round(Math.random() * 99999);
  33. $.post("sprawdzlogin.php", {name: $(form).find('input[name="email"]').val(), city: random}, function(data) {
  34. var obj = jQuery.parseJSON(data);
  35. tekst = tekst + obj.two;
  36. })
  37. }
  38. if (tekst != "") {
  39. if ($(form).find('input[name="email"]').val() != "") {
  40. setTimeout(function() {
  41. $("#freeow").freeow("Błąd", "Proszę uzupełnić następujące pola:<br/>" + tekst, {classes: ["gray", "error"], autoHide: true, hideDuration: 200});
  42. }, 2500);
  43. }
  44. if ($(form).find('input[name="email"]').val() == "") {
  45. $("#freeow").freeow("Błąd", "Proszę uzupełnić następujące pola:<br/>" + tekst, {classes: ["gray", "error"], autoHide: true, hideDuration: 200});
  46. }
  47. return false;
  48. } else {
  49. $(form).submit();
  50. }
  51. return false;
  52. }
  53. <form action="rejestracja.html" method="get" name="rej" id="rej" onsubmit="return sprawdz1(this);">
  54. <div id="rej2a">
  55. <img src="images/logo1.gif" alt="CodzienneWybory.pl">
  56. <table cellspacing="0" cellpadding="0">
  57. <tr>
  58. <td></td>
  59. <td><h2>Rejestracja</h2></td>
  60. </tr>
  61. <tr>
  62. <td>E-mail:</td>
  63. <td><input type="text" name="email"></td>
  64. </tr>
  65. <tr>
  66. <td>Hasło:</td>
  67. <td><input type="password" name="pass"></td>
  68. </tr>
  69. <tr>
  70. <td>Powtórz hasło:</td>
  71. <td><input type="password" name="pass2"></td>
  72. </tr>
  73. <tr>
  74. <td>Nick:</td>
  75. <td><input type="text" name="login"></td>
  76. </tr>
  77. </table>
  78. <input type="submit" class="go1" value="Zarejestruj" style="color: #ffffff;font-size: 14px;font-weight: bold;background: url('images/go3.png') no-repeat 100% 0;height: 33px; width: 140px; margin-right:30px"/>
  79. </div></form>


Przeglądarka mi wywala błąd:
jquery.min.js: too much recursion a w IE stacj overflow ...

co jest przyczyną tego błędu?


Z góry dziękuję za pomoc,
Northwest
wookieb
w
Kod
onsubmit="return sprawdz1(this);"

masz wywołanie funkcji sprawdz1 w momencie wysłania formularza (czyli na zdarzenie "submit" formularza)

W funkcji sprawdz1 masz
Kod
$(form).submit();

Znowu wysłanie formularza, czyli znowy wywołanie zdarzenia "submit", czyli znowy wywołanie funkcji sprawdz1 i tak w kółko.
Wywal submit z funkcji.
northwest
jak to wyrzuciłem, to formatka się nie wysyła sad.gif



takie to troszkę dziwne, bo poprawiłem "na sztywno" wynik POSTa i zadziałało (błąd zniknął) - tylko IE 8 wyświetla błąd stack overflow, a
9 jakby nie wysyłała tego formularza.... (klikam wyślij i nie reaguje - pozostałe przeglądarki działają poprawnie)
wookieb
Fakt,
Zamiast submita w JS wstaw tam return true
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-2024 Invision Power Services, Inc.