Ich habe einen jQuery-UI-Dialog, der auf meiner ASP.NET-Seite hervorragend funktioniert:
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');
});
});
Mein div:
<div id="dialog" style="text-align: left;display: none;">
<asp:Button ID="btnButton" runat="server" Text="Button" onclick="btnButton_Click" />
</div>
Aber der btnButton_Click wird nie aufgerufen ... Wie kann ich das lösen?
Weitere Informationen: Ich habe diesen Code hinzugefügt, um div in form zu verschieben:
jQuery("#dialog").parent().appendTo(jQuery("form:first"));
Aber immer noch ohne Erfolg ...
Antworten:
Sie sind nah an der Lösung und erhalten nur das falsche Objekt. Es sollte so sein:
quelle
Die Verwendung dieses Codes löste mein Problem und funktionierte in jedem Browser, Internet Explorer 7, Firefox 3 und Google Chrome. Ich fange an, jQuery zu lieben ... Es ist ein cooles Framework.
Ich habe auch mit Teilrendern getestet, genau das, wonach ich gesucht habe. Großartig!
quelle
FWIW, die Form: Die erste Technik hat bei mir nicht funktioniert.
Die Technik in diesem Blog-Artikel hat jedoch Folgendes bewirkt:
http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html
Fügen Sie dies der Dialogdeklaration hinzu:
quelle
Beachten Sie, dass in jQuery UI v1.10 eine zusätzliche Einstellung vorhanden ist. Es wurde eine appendTo- Einstellung hinzugefügt, um die ASP.NET- Problemumgehung zu beheben , mit der Sie das Element erneut zum Formular hinzufügen.
Versuchen:
quelle
Ken 's Antwort oben hat den Trick für mich getan. Das Problem mit der akzeptierten Antwort ist, dass es nur funktioniert, wenn Sie ein einzelnes Modal auf der Seite haben. Wenn Sie mehrere Modalitäten haben, müssen Sie dies inline im Parameter "open" tun, während Sie den Dialog initialisieren, nicht nachträglich.
Wenn Sie das tun, was Ihnen die erste akzeptierte Antwort mit mehreren Modalitäten sagt, erhalten Sie nur das letzte Modal auf der Seite, das Postbacks ordnungsgemäß abfeuert, nicht alle.
quelle
Dies liegt hauptsächlich daran, dass jQuery das Dialogfeld mithilfe des DOM außerhalb der Formular-Tags verschiebt . Verschieben Sie es zurück in die Formular-Tags und es sollte gut funktionieren. Sie können dies sehen, indem Sie das Element in Firefox überprüfen.
quelle
Ich wollte dieses Problem nicht für jeden Dialog in meinem Projekt umgehen müssen, also habe ich ein einfaches jQuery-Plugin erstellt. Dieses Plugin dient lediglich zum Öffnen neuer Dialoge und zum Platzieren dieser im ASP.NET- Formular:
Um das Plugin zu verwenden, laden Sie zuerst die jQuery-Benutzeroberfläche und dann das Plugin. Dann können Sie Folgendes tun:
Dieses Plugin setzt voraus, dass Sie bereit sind, den Dialog beim Aufrufen anzuzeigen.
quelle
Ich weiß, dass dies eine alte Frage ist, aber für alle, die das gleiche Problem haben, gibt es eine neuere und einfachere Lösung: In jQuery UI 1.10.0 wurde die Option "appendTo" eingeführt
http://api.jqueryui.com/dialog/#option-appendTo
quelle
Fantastisch! Dies löste mein Problem mit ASP: Button-Ereignis, das nicht in jQuery modal ausgelöst wurde. Beachten Sie, dass bei Verwendung des Moduls jQuery UI mit den folgenden Funktionen das Schaltflächenereignis ausgelöst werden kann:
Die folgende Zeile ist der Schlüssel, damit dies funktioniert!
quelle
Ich habe gerade die folgende Zeile hinzugefügt, nachdem Sie den Dialog erstellt haben:
quelle
Dies war die klarste Lösung für mich
Der gesamte Inhalt des
dlg2
wird zum Einfügen in Ihre Datenbank verfügbar sein. Vergessen Sie nicht, diedialog
Variable so zu ändern , dass sie Ihrer entspricht.quelle
Verwenden
UseSubmitBehavior="false"
Sie mit ASP.NET einfach Ihre ASP.NET-Schaltfläche:Referenz: Button.UseSubmitBehavior-Eigenschaft
quelle
Die Lösung von Robert MacLean mit der höchsten Stimmenzahl ist zu 99% korrekt. Aber die einzige Ergänzung, die jemand wie ich benötigt, ist, wann immer Sie diesen jQuery-Dialog öffnen müssen, vergessen Sie nicht, ihn an den übergeordneten anzuhängen. Wie unten:
var dlg = $('#questionPopup').dialog( 'open'); dlg.parent().appendTo($("form:first"));
quelle
Verwenden Sie diese Zeile, damit dies funktioniert, während Sie die Option modal: true verwenden.
quelle
Die
$('#dialog').parent().appendTo($("form:first"))
Lösung funktioniert in IE 9 einwandfrei. In IE 8 wird der Dialog jedoch direkt angezeigt und ausgeblendet. Sie können dies nur sehen, wenn Sie einige Warnungen platzieren, sodass der Dialog anscheinend nie angezeigt wird. Ich verbringe einen Morgen damit, eine Lösung zu finden, die auf beiden Versionen funktioniert, und die einzige Lösung, die auf beiden Versionen 8 und 9 funktioniert, ist:Ich hoffe, dies hilft anderen, die mit dem gleichen Problem zu kämpfen haben
quelle
UseSubmitBehavior
Eigenschaft von Button auffalse
Wert setzen. Auf diese Weise brauchen Sie keineappend
oderprepend
Anrufe.Bewegen Sie den Dialog in die richtige Richtung, aber Sie sollten dies nur über die Schaltfläche tun, die den Dialog öffnet. Hier ist ein zusätzlicher Code im Beispiel für die jQuery-Benutzeroberfläche:
Fügen Sie Ihr
asp:button
in den Dialog ein, und es läuft gut.Hinweis: Sie sollten die <Button> in <input type = button> ändern, um ein Postback zu verhindern, nachdem Sie auf die Schaltfläche "Benutzer erstellen" geklickt haben.
quelle
Die genaue Lösung ist;
quelle