Formularz nie wysyła się w IE (poprzez jquery)

0

Witam serdecznie,
mam taki kod:

<script type="text/javascript">
    function email_validate(src)
    {
        var reg = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
        return reg.test(src);
    }
 
    function sprawdz1(form)
    {
        var tekst = '';
        if ($(form).find('input[name="email"]').val() == "") {
            tekst = tekst + "- email<br/>";
        }
        if ($(form).find('input[name="pass"]').val() == "") {
            tekst = tekst + "- hasło <br/>";
        }
        if ($(form).find('input[name="pass2"]').val() == "") {
            tekst = tekst + "- powtórne hasło <br/>";
        }
        if ($(form).find('textarea[name="login"]').val() == "") {
            tekst = tekst + "- login <br/>";
        }
        if ($(form).find('input[name="pass"]').val() != $(form).find('input[name="pass2"]').val()) {
            tekst = tekst + "- pole hasło różni się od pola z powtórzonym hasłem <br/>";
        }
        if ($(form).find('input[name="email"]').val() != "") {
            if (email_validate($(form).find('input[name="email"]').val()) == false) {
                tekst += "- błędny format adresu email <br/>"
            }
        }
        if ($(form).find('input[name="email"]').val() != "") {
            var random = Math.round(Math.random() * 99999);
            $.post("sprawdzlogin.php", {name: $(form).find('input[name="email"]').val(), city: random}, function(data) {
                var obj = jQuery.parseJSON(data);
                tekst = tekst + obj.two;
            })
        }
        if (tekst != "") {
            if ($(form).find('input[name="email"]').val() != "") {
                setTimeout(function() {
                    $("#freeow").freeow("Błąd", "Proszę uzupełnić następujące pola:<br/>" + tekst, {classes: ["gray", "error"], autoHide: true, hideDuration: 200});
                }, 2500);
            }
            if ($(form).find('input[name="email"]').val() == "") {
                $("#freeow").freeow("Błąd", "Proszę uzupełnić następujące pola:<br/>" + tekst, {classes: ["gray", "error"], autoHide: true, hideDuration: 200});
            }
            return false;
        } else {
            $(form).submit();
        }
        return false;
    }
</script>
<form action="rejestracja.html" method="get" name="rej" id="rej" onsubmit="return sprawdz1(this);">
                    <div id="rej2a">
                        <img src="images/logo1.gif" alt="CodzienneWybory.pl">
                        <table cellspacing="0" cellpadding="0">
                            <tr>
                                <td></td>
                                <td><h2>Rejestracja</h2></td>
                            </tr>
                            <tr>
                                <td>E-mail:</td>
                                <td><input type="text" name="email"></td>
                            </tr>
                            <tr>
                                <td>Hasło:</td>
                                <td><input type="password" name="pass"></td>
                            </tr>
                            <tr>
                                <td>Powtórz hasło:</td>
                                <td><input type="password" name="pass2"></td>
                            </tr>
                            <tr>
                                <td>Nick:</td>
                                <td><input type="text" name="login"></td>
                            </tr>
                        </table>
                        <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"/>
                    </div></form>
 

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). Wie ktoś może co jest przyczyną?

0

Pomyśl. Przechwytujesz zdarzenie submit, w którym coś tam sprawdzasz i ... wywołujesz zdarzenie submit, które ponownie się przechwytuje i coś sprawdza i wywołuje zdarzenie submit i ...
Nieskończona pętla.
Nowe przeglądarki po cichu (tj. wszystko masz w konsoli! najwyższa pora zaprzyjaźnić się z narzędziami deweloperskimi w Twojej przeglądarce) przerywają Twoją magiczną pętlę po pewnym czasie, IE8 wywala błąd, który powinien był Ci dać do myślenia.

Rozwiązanie: Poszukaj sobie w Google jak wyłapać czy event jest wywołany "sztucznie" czy po akcji użytkownika. Sztucznie wywołane zdarzenie powinieneś przepuścić bez żadnego sprawdzania już.

0

mogę prosić o jakąś wskazówkę, po jakiej frazie szukać? :)

1

return true

zamiast

$(form).submit();

0

pomogło, dziękuję :)

ps. móglbym prosić o małą podpowiedź związaną z lyteboxem?:)

mam takie okienko na stronie głównej: http://stepby.no-ip.org/gra2/
na wszystkich przeglądarkach się ładnie ładuje, ale na FF nie (jest biała ramka tylko, bez treści).... :( Konsola ani firebug nie zwracają żadnych błędów... :(

Wiesz może dlaczego?

0

Na Operze za pierwszym razem się władowało, po odświeżeniu także biała strona. Parę uwag:

http://i.imgur.com/Ahq7l.png
Nie wiem co masz po stronie serwera, ale jak strona główna na tym etapie wykonuje się tak długo, to paru użytkowników i zarżnie serwer ;)

jQuery(window).load(function() {
  jQuery("#linkfabryka").trigger('click');
});

Pomóż mi to zrozumieć, bo wg dokumentacji load nigdy nie przyjmuje tylko jednego parametru - funkcji: http://api.jquery.com/load/

ID nie ma prawa się powtarzać w wielu elementach! ID jest wartością unikalną i ma występować tylko raz. Od powtarzanych wartości masz class, a u Ciebie jest cały listing elementów z tym samym ID: http://i.imgur.com/8P5aD.png

Dobra rada: CSS Sprites. Zamiast ładować jakieś 50 na obrazków załadujesz 1 większy i wyświetlisz jego odpowiednie fragmenty.

0

Dziękuję za odpowiedź :)
pozmienialem te ID itp ale dalej nie działa w FF :( ciągle biała plama .... :/
$('#b').load('article.html #target'); - jest funkcja z 1 parametrem w tym przykładzie...

Co do czasu ładowania strony to może dlatego że to localhost? w tym pliku php którym tam jest, jest tylko coś takiego:

 
try {
                            $tablica = $ms->query_select("select tresc fromtxt WHERE id = '1';");
                            if (isset($tablica)) {
                                foreach ($tablica as $wyn => $wartt) {
                                    $txt = ($wartt['tresc']);
                                    echo strip_tags($txt);
                                }
                            }
                        } catch (Exception $error) {
                            echo '<b>Komunikat</b>: ' . $error->getMessage() . '<br /><b>Plik</b>: ' . $error->getFile() . '<br /><b>Wiersz</b>: ' . $error->getLine() . '<br /><b>IP</b>: ' . $_SERVER['REMOTE_ADDR'] . ' | <b>LINK</b>: ' . $_SERVER['REQUEST_URI'] . '<br /><br />' . $error->getTraceAsString();
                        }

czyli nic skomplikowanego.... innych zapytań tam nie ma

0
  1. Jest przykład z jednym parametrem, tak, ale nie z funkcją! Tak jak napisałem - wyjaśnij co wg Ciebie tamto miało robić - wymyślimy, jak to zrobić poprawnie.

  2. Nie tylko zapytania mogą zamulać..

0
  1. chce po prostu wyświetlić okienko :) i nic więcej.... czyli generalnie to co jest :)
  2. a widzisz w tym kodzie jakieś "pułapki"?
0

Generalnie po wejściu na tą stronkę, w tym okienku animowanym chciałbym wyświetlać ekran powitalny (automatycznie wczytany po załadowaniu strony) .... i tyle :-)

0

Skup się na tym load. Przeczytaj dokumentacje, sprawdź swój kod, i tak przegladaj je na przemian, aż wyciągniesz wnioski z różnic między dokumentacją, a Twoim kodem ;)

0

Ok, poszukam :)

ale myślę że to też nie do końca ten problem, jak wywalę całkiem tą funkcję i kliknę np. na ikonkę fabryki to i tak wysakuje mi w FF pusta ramka - a na innych przeglądarkach wyśwoetli się poprawnie....

0
northw napisał(a):

Ok, poszukam :)

ale myślę że to też nie do końca ten problem, jak wywalę całkiem tą funkcję i kliknę np. na ikonkę fabryki to i tak wysakuje mi w FF pusta ramka - a na innych przeglądarkach wyśwoetli się poprawnie....

nie masz pomysłu co to może byc? :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1