2008-11-03 61 views
6

Oto scenariusz:Czy istnieje sposób korzystania z Thickboxa z dynamiczną zawartością?

Mam pole tekstowe i przycisk na stronie internetowej. Po kliknięciu przycisku chcę otworzyć okno wyskakujące (używając Thickbox), które wyświetli wszystkie elementy pasujące do wartości wprowadzonej w polu tekstowym. Obecnie korzystam z implementacji Thickbox w IFrame. Problem polega na tym, że adres URL do wyświetlenia jest zakodowany na stałe w atrybucie "alt" przycisku.To, czego naprawdę potrzebuję, to atrybut "alt" przekazuje wartość w polu tekstowym do wyskakującego okienka.

Tutaj jest kod do tej pory:

<input type="textbox" id="tb" /> 
<input alt="Search.aspx?KeepThis=true&TB_iframe=true&height=500&width=700" class="thickbox" title="Search" type="button" value="Search" /> 

Idealnie, chciałbym umieścić wartość pola tekstowego do url Search.aspx ale nie może wydawać się, aby dowiedzieć się, jak to zrobić Mój obecny alternatywą jest użycie jQuery ustawić. funkcja kliknięcia przycisku Szukaj, aby wywołać usługę sieciową, która ustawi niektóre wartości w sesji ASP.NET Strona Search.aspx użyje zmiennych sesji do wyszukiwania, ale jest to trochę niestabilne, ponieważ wydaje się jak zawsze będzie możliwość, że se arch wykonuje się przed ustawieniem zmiennych sesyjnych.

Odpowiedz

9

Wystarczy nacisnąć przycisk na przycisku, aby uruchomić funkcję, która wywołuje tb_show(), przekazując wartość pola tekstowego. Coś jak

... onclick = "doSearch()" ... 

function doSearch() 
{ 
    tb_show(caption, 'Search.aspx?KeepThis=true&q=\"' + 
      $('input#tb').val() + 
      '\"&TB_iframe=true&height=500&width=700'); 
} 
+0

To jest dokładnie to, czego szukałem, dziękuję! Jeśli mógłbym zagłosować na ciebie 10 razy, to bym :-) –

0

Oto pomysł. Nie sądzę, że to jest bardzo ładne, ale powinno działać:

$('input#tb').blur(function(){ 
    var url = $('input.thickbox').attr('alt'); 
    var tbVal = $(this).val(); 

    // add the textbox value into the query string here 
    // url = .. 

    $('input.thickbox').attr('alt', url); 

}); 

Zasadniczo, można zaktualizować tag alt przycisku każdym razem, gdy pole tekstowe traci fokus. Zamiast tego można również słuchać naciśnięć klawiszy i aktualizować po każdym.

Jeśli chodzi o aktualizowanie łańcucha zapytania, pozwolę ci znaleźć najlepszy sposób. Widzę, jak umieszczam tam symbol zastępczy, taki jak: & TB = TB_PLACEHOLDER. Następnie możesz po prostu zastąpić ciąg.

+0

Wypróbowałem to. Alt nabiera mocy, ale nie wydaje się, że wtyczka Thickbox ją respektuje. Nadal używa oryginalnego adresu URL. :-( –

0

W code-behind można też po prostu dodać znacznik alt progammatically,

button1.Attributes.Add("alt", "Search.aspx?KeepThis=true&TB_iframe=true&height=500&width=700"); 
2

Jeśli czytasz instrukcję, w sekcji zawartości iframe, to powie Ci, że parametry muszą przejść przed parametrem TB_iframe. Wszystko po tym zostanie usunięte.

+0

Dziękuję! Nieodebrane w instrukcji! – jerrygarciuh

Powiązane problemy