Frage

Zunächst sollte ich erwähnen, dass ich den ganzen Tag mit der Suche verbringe und nicht herausfinden kann, was mit meinem Code nicht stimmt und warum er nicht funktioniert ...

Ich benötige einen modalen Dialog zur Bestätigung in meinem Code, daher verwende ich diesen modalen jQuery-Dialog: JQuery-Bestätigung

Was ich brauche, ist, diese Funktionalität in ein einzubetten <asp:Button>...

Mein Problem ist, dass, wenn ich auf die Schaltfläche klicke, das Dialog-Popup erscheint, aber die Ja/Nein-Schaltflächen nicht funktionieren und beide den Dialog einfach verschwinden lassen.

Ich verwende auch den folgenden Code, aber __doPostBack() hat überhaupt nichts gemacht, aber es führt einfache JS-Codes wie alarm('') perfekt aus:

$("#complexConfirm").confirm({
     title: "Redirect confirmation",
     text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
     confirm: function (button) {
         __doPostBack('complexConfirm', 'OnClick');
     },
     cancel: function (button) {
         return false;
     },
     confirmButton: "Yes",
     cancelButton: "No"
});

Ich suche und führe einen Dialog, weil das Element außerhalb des Formularelements liegt, also sollte ich es wieder in das Formular zurückbringen, aber ich weiß nicht, wie ich den folgenden Code ausprobieren soll, aber das funktioniert nicht

$("#editEventModal").parent().appendTo(jQuery("form:first"));

Ein weiteres Problem besteht darin, dass ich versuche, ein Postback mit einem Javascript-Ereignis ohne das Dialogfeld durchzuführen. Ich verwende zwei Schaltflächen, eine zum Aufrufen von Javascript und eine andere zum Aufrufen von Javascript. Wenn ich jedoch __doPostBack verwende, wird die Seite aktualisiert, aber mein Schaltflächenereignis kommt nicht im Code -Behind, ich versuche mehrere Möglichkeiten, das Button-OnClick-Ereignis aufzurufen, aber es aktualisiert nur die Seite und ruft nicht mein Butoon-OnClick-Mehtod auf !!!

Die Tastendeklaration sieht folgendermaßen aus:

<asp:Button ID="complexConfirm" ClientIDMode="Static" runat="server" OnClick="TestBTN_Click" Text="Test" />
<asp:Button ID="checkit" ClientIDMode="Static" runat="server" OnClientClick="__doPostBack('<%=complexConfirm.UniqueID%>', '');" Text="CHECK" />

Was soll ich gegen diese beiden Probleme tun?

Ich suche viel und keine der Lösungen hat für mich funktioniert !!!

Ich freue mich über jede Lösung, danke.

War es hilfreich?

Lösung

Ohne die Deklaration Ihres asp:button zu kennen, ist hier meine beste Vermutung.

Sie müssen die eindeutige ID der Schaltfläche verwenden, das „Name“-Attribut der Schaltfläche, nicht ihre ID.

__doPostBack('<%=complexConfirm.UniqueID%>', '');

Da es sich außerdem um eine Schaltfläche handelt, müssen Sie OnClick nicht unbedingt angeben

BEARBEITEN:Ich habe ein funktionierendes Beispiel erstellt, das zeigt, was Sie meiner Meinung nach erreichen wollen.Sie können dies nach Bedarf an Ihre jQuery-Bestätigung anpassen.

aspx:

<asp:Button ID="btnTest1" runat="server" Text="Test1" OnClick="btnTest1_Click" />

Javascript:

<script>
    $('#<%=btnTest1.ClientID%>').confirm({
        text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
        title: "Confirmation required",
        confirm: function (button) {
            // do something
            __doPostBack('<%= btnTest1.UniqueID%>', '');
        },
        cancel: function (button) {
            // do something
        },
        confirmButton: "Yes I am",
        cancelButton: "No",
        post: true
    });
</script>

Code dahinter:

protected void btnTest1_Click(object sender, EventArgs e)
{
    Response.Write("You clicked YES");
}

Ich denke, ein Teil des Problems bestand darin, dass der Name Ihres Ereignisses nicht mit dem Namen Ihrer Schaltfläche benannt wurde.Wenn Sie autoEventWireup verwenden, was meiner Meinung nach der Fall ist, wird Ihr Ereignis nicht ausgelöst, da kein Ereignis mit einem passenden Namen gefunden werden kann.

Als erstes habe ich also die StaticClientID entfernt.Sie können JQuery weiterhin mit von asp.net generierten IDs verwenden.Dann habe ich dafür gesorgt, dass die Veranstaltung benannt wurde btnTest1_Click weil der Name der Schaltfläche ist btnTest1

Ich bin mir nicht sicher, warum Sie die andere Schaltfläche benötigt haben, da Sie anscheinend nur bestätigen möchten, bevor die Schaltfläche gesendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top