Überprüfen Sie die emittierten HTML mit Firebug oder somthing ähnlich und Sie werden wahrscheinlich feststellen, dass Ihre Schaltfläche nicht mehr innerhalb der Form-Tags und ist am Ende des Body-Tags.
In Sie sind OK-Taste Rückruf Sie so etwas wie
dialogBox.appendTo($('#FormIdHere'));
DialogBox wird eine Variable gesetzt, wie so
var dialogBox = $('#DialogDiv').dialog({ autoOpen: false });
Dies sollte Ihre Taste zurück in das Formular hinzufügen können.
EDIT:
Hier ist ein Code-Snippet ich vor kurzem verwendet haben (alle den Code unten abgefeuert wird bei einem Onload-Funktion aber reasonPostBack muss außerhalb der onload Funktion deklariert werden)
var button = $('input.rejectButton');
reasonPostBack = button.attr('onclick');
button.removeAttr('onclick');
var dialogBox = $('#ReasonDiv').dialog({ autoOpen: false, title: 'Please enter a reason', modal: true, bgiframe: true, buttons: { "Ok": function() {
if ($('input.reasonTextBox').val().length > 0) {
$(this).dialog('close');
dialogBox.appendTo($('#theform'));
reasonPostBack();
}
else
{
alert('You must enter a reason for rejection');
}
}
}
});
button.click(function() {
dialogBox.dialog('open');
return false;
});
Erste i nehmen einen Verweis auf die .Net Postbacks mit
var reasonPostBack = button.attr('onclick');
und halten für später dann aus der Schaltfläche das Click-Ereignis Streifen an den Pfosten zurück zu stoppen ocurring „au tomatenhaft ".Ich baue dann das Dialogfeld und füge eine anonyme Funktion für die OK-Schaltfläche hinzu. Dadurch wird mein Code ausgeführt, um zu testen, ob sich etwas in einem Textfeld befindet. Wenn dies nicht der Fall ist, wird der Benutzer einfach darauf hingewiesen.
Schließt das div
$(this).dialog('close');
die div bereit innerhalb der Form-Tags Fügt wieder für den Posten zurück
dialogBox.appendTo($('#theform'));
und ruft dann die Original-Postbacks
reasonPostBack();
schließlich die letzte Bit des Codes
button.click(function() {
dialogBox.dialog('open');
return false;
});
fügt der .NET-Schaltfläche unseren eigenen Ereignishandler hinzu, um den Dialog zu öffnen, der zuvor instanziiert wurde.
HTH
OneShot
Sie auch Ihre jQuery Dialog-Code in der Funktion pageload setzen könnte, wird dies auf jeden Teil-Postbacks von asp.net Ajax aufgerufen werden (http://www.asp.net/ ajax/documentation/live/overview/AJAXClientEvents.aspx) –
Der Einsatz von Live-Events hat es geschafft. Vielen Dank, Marc. Simpel und einfach :-) –