Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] PreventDefault nie działa w połączeniu z delegate
pehaperowiec
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 8
Dołączył: 26.09.2011

Ostrzeżenie: (10%)
X----


Kod
$().ready(function() {
   var a=0;
   $(".addMore a").on({
      click:function(e) {
         if(a==0) {
            $(".minusMore").prepend('<a href="">- Odejmij pole do wprowadzania wpływu</a>');            
         }
        
         a++;
        
         $('#addFormMoney>ul').append(
            '<li>'+
               '<p>'+(a+1)+'</p>'+
               '<div>'+
                  '<label>Podaj wartość wpływu</label>'+
                  '<input type="text" name="valueMoney[]" value="">'+
                  '<label>Wybierz kategorie wpływu</label>'+  
                  '<div>'+
                     '<h4><a href="#">Wybierz kategorie</a></h4>'+
                     '<ul>'+                                      
                        '<li><a href="">Bartons</a></li>'+
                        '<li><a href="">TLS</a></li>'+
                        '<li><a href="">kat 3</a></li>'+
                        '<li><a href="">kat 4</a></li>'+
                        '<li><a href="">kat 5</a></li>'+
                     '</ul>'+
                     '<select name="catEnter[]">'+
                        '<option value="Bartons" selected="selected">Bartons</option>'+
                        '<option value="TLS">TLS</option>'+
                        '<option value="kat 3">kat 3</option>'+
                        '<option value="kat 4">kat 4</option>'+
                        '<option value="kat 5">kat 5</option>'+
                     '</select>'+
                  '</div>'+
               '</div>'+
            '</li>'
         );
        
         e.preventDefault();
      }  
   });
  
   $(".minusMore").delegate("a","click",function(e) {
         $("#addFormMoney li").eq(a).remove();
         --a;
         if(a==0) {
            $(".minusMore").text(' ');      
         }
         e.preventDefault();  
   });  
  
   $("#addFormMoney ul").on("click","h4 a",function(e) {
      $(this).parent().next().fadeIn();
      e.preventDefault();  
   });
  
   $("#addFormMoney ul ul").on("click","li a",function(e) {
      var indexLi=$(this).parent().index();
      $(this).parent().parent().next().find("option").removeAttr("selected").eq(indexLi).attr({selected:"selected"});
      $(this).parent().parent().fadeOut();
      
      e.preventDefault();
   });
  
   $("#addFormMoney ul").on({
      click:function(e) {
        
        
         //e.preventDefault();
         //e.stopPropagation();
      }  
   });
  
  
   $("html").on({
      click:function() {
         //$("#addFormMoney ul ul").fadeOut();
      }  
   });
});
i HTML
  1. <div id="right">
  2. <h3>Dodaj wpływ</h3>
  3. <p class="addMore"><a href="">+ Dodaj kolejny wpływ jednocześnie</a></p>
  4. <p class="minusMore"></p>
  5. <form method="post" action="addenter.php" id="addFormMoney">
  6. <ul>
  7. <li>
  8. <p>1</p>
  9. <div>
  10. <label>Podaj wartość wpływu</label>
  11. <input type="text" name="valueMoney[]" value="">
  12. <label>Wybierz kategorie wpływu</label>
  13. <div>
  14. <h4><a href="#">Wybierz kategorie</a></h4>
  15. <ul>
  16. <li><a href="">Bartons</a></li>
  17. <li><a href="">TLS</a></li>
  18. <li><a href="">kat 3</a></li>
  19. <li><a href="">kat 4</a></li>
  20. <li><a href="">kat 5</a></li>
  21. </ul>
  22. <select name="catEnter[]">
  23. <option value="Bartons" selected="selected">Bartons</option>
  24. <option value="TLS">TLS</option>
  25. <option value="kat 3">kat 3</option>
  26. <option value="kat 4">kat 4</option>
  27. <option value="kat 5">kat 5</option>
  28. </select>
  29. </div>
  30. </div>
  31. </li>
  32. </ul>
  33. <input type="submit" value="Dodaj nowy wpływ">
  34. </form>
  35. <?php
  36. echo '<pre>';
  37. print_r($_POST);
  38. echo '</pre>';
  39. ?>
  40. </div>
Najpierw za pomocą linku o selektorze "#addFormMoney ul h4 a" dodaje troche kodu HTML, czyli poleformularza typu tekstowego i seleca, którego wyłączam i styluje diva by mieć efekt ostylowanego selecta oraz 2 labele [działa]. Jeden taki zestaw jest dostepny zawsze, wybieram z opcji liste i opcja trafia do $_POST co też działa. Gdy jednak rozwine jakąś nowo dodaną liste i wybiorę jakąś opcje to strona się przeładowywuje. Tak jakby e.preventDefault nie działało. Dlaczego tak się dzieje. Z góry dziękuje za pomoc.

Ten post edytował pehaperowiec 7.01.2015, 00:53:05
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 02:14