![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Przejdę do rzeczy: Mamy powiedzmy akcję ajaxową: Kod $.ajax({ type: "POST", url: "index.php?module="+moduleName+"&action=getSearchView&noView=1&field="+val }).done(function( data ) { forField.html( data ); }); Do pola <div class="forField"> zostało wrzuconekolejne pole wyszukiwania. Widok: Kod <div class="searchFields"> <div class="forField"> <select>Lista pól po których mozna szukac</select> <select>Warunki (=|!=|>|<|in|not in itd)</select> <input or select or checkbox> Wartość <plus i minus> (aby dodać kolejne pole forField takie samo jak to) <div/> <div class="forField"> <div/> .... </div> Tak to mniej więcej wygląda i działa ale mogłoby działać wiele lepiej. Po pierwsze, nie działa jQuery.live, zalecany jest jQuery.on, ale on nie działa... Przynajmniej tak jak powinien. <plus i minus> mają .on("click" function(){ ... }) ale te przyciski działają tylko przy tych polach, które są aktualnie wczytane. Nie działają dla tych, których pola zostały wczytane za pomocą przycisku "plus" przy innym polu. Po drugie, poza akcjami podpiętymi pod plus i minus mam poprzypinane inne akcje tj. // zapewniam, że składnia w kodzie jest w porządku ($(<input or select or checkbox>) używam tylko dla pokazania ze może tam być różne pole) $(<input or select or checkbox>).on("keyup || change", function(){....}) też działa tylko dla pierwszego pola, inne pola dodane za pomocą plusa nie działają. Te pola są dodawane za pomocą AJXA który wkleiłem na samej górze. Jeśli nie da się użyć tego ".on()" normalnie, to może da się zrobić coś takiego: Kod $.ajax({ type: "POST", url: "index.php?module="+moduleName+"&action=getSearchView&noView=1&field="+val }).done(function( data ) { forField.html( data ); initPlusMinus( data ); initChangeAndKeyup( data ); }); ale zmienna"data" to nie referencja do htmlowego obiektu który właśnie został wstawiony tylko zwykły ciąg, string. Jak uzyskać referencje do właśnie wstawionego obiektu htmlowego z danej zmiennej? Biorąc pod uwagę, że może się znajdować nieskończenie wiele dokładnie identycznych pól. Ten post edytował Adi32 13.05.2013, 11:41:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 110 Dołączył: 18.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mógłbyś pokazać jak używasz tego ON w jQuery (IMG:style_emoticons/default/smile.gif) bo coś mi się wydaje, że źle go używasz (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Mógłbyś pokazać jak używasz tego ON w jQuery (IMG:style_emoticons/default/smile.gif) bo coś mi się wydaje, że źle go używasz (IMG:style_emoticons/default/smile.gif) Zapewne chodzi Ci o to, że .on() na elementach dynamicznych używamy w taki sposób: $(nieDynamicznyElement).on(event, elementDynamiczny, funkcja); To powiedz mi jak użyć tej konstrukcji jeżeli nie wiemy jakim obiektem będzie element dynamiczny, wiemy jedynie, że będzie to drugi element w obiekcie "forField". Próbowałem tak: Kod $('.forField').each(function(){
$(this).children().next().on('keyup || change', $(this) , function(){ var form = $('form[name="search"]'); var sform = (form.serialize()); $.ajax({ type: "POST", url: "index.php?module="+moduleName+"&action=saveSearchToSession", data: {result: sform} }).done(function( data ) { ListView.refreshListTable(); }); return false; }) }) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 110 Dołączył: 18.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Pokaż strukturę html (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Search.js:
Zrzucik: (IMG:http://img803.imageshack.us/img803/7476/szukajka.jpg) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 110 Dołączył: 18.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tak (IMG:style_emoticons/default/smile.gif) Gdybyś miał to jak spakować i wysłać to bym bardziej mógł pomóc, ponieważ mógłbym po tym przeklinać (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem (IMG:style_emoticons/default/smile.gif)
Kod this.initRefreshList = function() { _this = this; $('form[name="search"]').on('change || blur', '.forField [name*="search"] ', function(){ obj = $(this); var form = $('form[name="search"]'); var sform = (form.serialize()); $.ajax({ type: "POST", url: "index.php?module="+moduleName+"&action=saveSearchToSession", data: {result: sform} }).done(function( data ) { ListView.refreshListTable(); }); return false; }); } ' obj.children().eq(1) ' raczej by nie przeszło, zdaje mi się, że w tym miejscu dostępna jest tylko stringowa ścieżka jak w CSS. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 18:25 |