Mam okno dialogowe interfejsu użytkownika jQuery działające świetnie na mojej stronie ASP.NET:
jQuery(function() {
jQuery("#dialog").dialog({
draggable: true,
resizable: true,
show: 'Transfer',
hide: 'Transfer',
width: 320,
autoOpen: false,
minHeight: 10,
minwidth: 10
});
});
jQuery(document).ready(function() {
jQuery("#button_id").click(function(e) {
jQuery('#dialog').dialog('option', 'position', [e.pageX + 10, e.pageY + 10]);
jQuery('#dialog').dialog('open');
});
});
My div:
<div id="dialog" style="text-align: left;display: none;">
<asp:Button ID="btnButton" runat="server" Text="Button" onclick="btnButton_Click" />
</div>
Ale btnButton_Click nigdy się nie nazywa ... Jak to rozwiązać?
Więcej informacji: Dodałem ten kod, aby przenieść div do formularza:
jQuery("#dialog").parent().appendTo(jQuery("form:first"));
Ale wciąż bez powodzenia ...
Odpowiedzi:
Jesteś blisko rozwiązania, po prostu otrzymujesz niewłaściwy obiekt. Powinno to wyglądać tak:
źródło
Użycie tego kodu rozwiązało mój problem i działało w każdej przeglądarce, Internet Explorer 7, Firefox 3 i Google Chrome. Zaczynam kochać jQuery ... To fajne środowisko.
Testowałem też z częściowym renderowaniem, dokładnie tego, czego szukałem. Świetny!
źródło
FWIW, forma: pierwsza technika nie działała dla mnie.
Jednak technika opisana w tym artykule na blogu:
http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html
W szczególności dodanie tego do deklaracji okna dialogowego:
źródło
Pamiętaj, że w jQuery UI v1.10 jest dodatkowe ustawienie. Jest tam appendTo ustawienie, które zostały dodane, aby zająć się ASP.NET obejść używasz, aby ponownie dodać element do formularza.
Próbować:
źródło
Powyższa odpowiedź Ken'a załatwiła sprawę . Problem z zaakceptowaną odpowiedzią polega na tym, że działa ona tylko wtedy, gdy na stronie znajduje się jeden modal. Jeśli masz wiele modałów, musisz to zrobić bezpośrednio w parametrze „open” podczas inicjowania okna dialogowego, a nie po fakcie.
Jeśli zrobisz to, co mówi pierwsza zaakceptowana odpowiedź z wieloma modami, dostaniesz tylko ostatni modal na stronie działający poprawnie, odpalający zwroty, a nie wszystkie.
źródło
Przede wszystkim dlatego, że jQuery przenosi okno dialogowe poza znaczniki formularza za pomocą DOM . Przenieś go z powrotem do znaczników formularza i powinno działać dobrze. Możesz to zobaczyć, sprawdzając element w przeglądarce Firefox.
źródło
Nie chciałem omijać tego problemu dla każdego okna dialogowego w moim projekcie, dlatego stworzyłem prostą wtyczkę jQuery. Ta wtyczka służy jedynie do otwierania nowych okien dialogowych i umieszczania ich w formularzu ASP.NET :
Aby skorzystać z wtyczki, najpierw ładujesz interfejs użytkownika jQuery, a następnie wtyczkę. Następnie możesz wykonać następujące czynności:
Żeby było jasne, ta wtyczka zakłada, że jesteś gotowy, aby wyświetlić okno dialogowe po jego wywołaniu.
źródło
Wiem, że to stare pytanie, ale dla każdego, kto ma ten sam problem, istnieje nowsze i prostsze rozwiązanie: w jQuery UI 1.10.0 wprowadzono opcję „appendTo”
http://api.jqueryui.com/dialog/#option-appendTo
źródło
Fantastyczny! To rozwiązało mój problem ze zdarzeniem ASP: Button nie uruchamiającym się w module jQuery. Uwaga: użycie modalnego interfejsu użytkownika jQuery w następujący sposób umożliwia uruchomienie zdarzenia przycisku:
Następująca linia jest kluczem do uruchomienia tej funkcji!
źródło
Właśnie dodałem następujący wiersz po utworzeniu okna dialogowego:
źródło
To było dla mnie najwyraźniejsze rozwiązanie
Cała zawartość
dlg2
będzie dostępna do wstawienia do bazy danych. Nie zapomnij zmienićdialog
zmiennej, aby pasowała do twojej.źródło
Z ASP.NET wystarczy użyć
UseSubmitBehavior="false"
przycisku ASP.NET:Odniesienie: Właściwość Button UseSubmitBehavior
źródło
Rozwiązanie Roberta MacLeana z największą liczbą głosów jest poprawne w 99%. Ale jedynym dodatkiem, którego ktoś może wymagać, tak jak ja, jest to, że kiedy potrzebujesz otworzyć to okno dialogowe jQuery, nie zapomnij dołączyć go do rodzica. Jak poniżej:
var dlg = $('#questionPopup').dialog( 'open'); dlg.parent().appendTo($("form:first"));
źródło
Użyj tej linii, aby to zadziałało, używając opcji modal: true.
źródło
$('#dialog').parent().appendTo($("form:first"))
Rozwiązanie działa dobrze w IE 9. Ale w IE 8 to sprawia, że pojawiają się i znikają dialogowe bezpośrednio. Nie możesz tego zobaczyć, chyba że umieścisz jakieś alerty, więc wygląda na to, że okno dialogowe nigdy się nie pojawi. Pewnego ranka spędzam na znajdowaniu rozwiązania, które działa na obu wersjach, a jedynym rozwiązaniem, które działa na obu wersjach 8 i 9 jest:Mam nadzieję, że pomoże to innym osobom zmagającym się z tym samym problemem
źródło
UseSubmitBehavior
właściwość Button nafalse
wartość. W ten sposób nie potrzebujesz żadnych połączeńappend
aniprepend
połączeń.Przesuń okno we właściwy sposób, ale powinieneś to zrobić tylko w przycisku otwierającym okno dialogowe. Oto dodatkowy kod w przykładowym interfejsie użytkownika jQuery:
Dodaj swoje
asp:button
okno dialogowe i działa dobrze.Uwaga: powinieneś zmienić <przycisk> na <typ wejścia = przycisk>, aby zapobiec zwrotowi po kliknięciu przycisku „utwórz użytkownika”.
źródło
Dokładne rozwiązanie to;
źródło