Witam,

Tworzę w symfony prosty panel logowania, który wczytywany jest przez Ajaxa.

Fragment kodu, który odpowiada za wyswietlanie wczytanego formularza
  1. <a href="<?php echo url_for('sfGuardAuth/signin'); ?>" title="Zaloguj się" class="loginBtn" id="logowanie">zaloguj się</a>
  2. <div id="loginPopup">
  3. <div id="loading">
  4. <?php echo image_tag('loading.gif', array('alt' => 'Wczytywanie...')); ?>
  5. </div>
  6. </div>


Formularz wczytywany z pliku zewnętrznego

  1. <form action="<?php echo url_for('@sf_guard_signin') ?>" method="post">
  2. <table>
  3. <?php echo $form ?> // wyswietla tabelkę z inputami - <input id="signin_username" type="text" name="signin[username]"> i <input id="signin_password" type="password" name="signin[password]"> i labelami dla nich
  4. </table>
  5. <input type="submit" value="<?php echo __('sign in'); ?>" />
  6. </form>


Założenie jest takie, że formularz ma się pojawiać w popupie, a po wpisaniu wartości i naciśnięciu submita, ma przekierować do strony z logowaniem,
jednak gdy klikamy poza obszar popupa, ten ma się ukrywać.

Poniżej kod:

[JAVASCRIPT] pobierz, plaintext
  1. <script language="javascript">
  2. $(function(){
  3. var content = $("#loginPopup");
  4. var loading = $("#loading");
  5.  
  6. //show loading bar
  7. function showLoading(){
  8. loading
  9. .css({visibility:"visible"})
  10. .css({opacity:"1"})
  11. .css({display:"block"})
  12. ;
  13. }
  14. //hide loading bar
  15. function hideLoading(){
  16. loading.fadeTo(1000, 0);
  17. content.slideDown();
  18. };
  19.  
  20. $('#loginPopup').hide();
  21.  
  22. $('#logowanie').click(function(event){
  23. showLoading();
  24. content.load('<?php echo url_for('szukaj/loguj'); ?>', hideLoading);
  25. $('#loginPopup').toggle();
  26. return false;
  27. });
  28.  
  29. $('#loginPopup').on('click', function(){
  30. return false;
  31. });
  32.  
  33. $(document).click(function(){
  34. $('#loginPopup').hide();
  35. });
  36. });
  37. </script>
[JAVASCRIPT] pobierz, plaintext


Problem jednak jest taki, że jeśli zablokuję ukrywanie popupa po kliknięciu #loginPopup, automatycznie wczytany formularz też się blokuje i nie może zostać wysłany.
Gdy tego nie robię, formularz ukrywa się po kliknięciu na dowolny element zawarty w popupie (inputy, submity, tlo) ale następuje przekierowanie.
Próbowałem blokować elementy zagnieżdzone ale niestety tak też nie działa.

Czy znacie jakiś sposób aby ten problem rozwiązać?