asp:Button im Dialogfeld jQuery OnClick-Ereignis nicht auslösen.

Ich habe ein asp:Button in ein jQuery dialog, für die die OnClick event nicht feuern. Ich bin mit der PostBackUrl - Eigenschaft, um navigieren zu einer anderen Seite, aber ich will set diese Eigenschaft in der OnClick Ereignis, so dass ich fügen Sie eine query-string-variable nach dem Namen einer Datei, die Sie hochladen, in den dialog. Ich habe eine Frage zu diesem dialog erwähnt, weil ich konnte es nicht posten zurück, aber das ist behoben worden. Ein Klick auf die Schaltfläche Bucht wieder in Ordnung, und ich kann die PostBackUrl Eigenschaft in der asp-Markierung oder in der Page_Load() von der code-behind. Aber ich nicht Holen Sie sich die OnClick - Funktion, um das Feuer für einige Grund, und das ist, wo ich festlegen möchten die PostBackUrl. Hier ist die .aspx...

<form id="frmDialog" runat="server">
        <asp:Button ID="btnDisplayDialog" runat="server" Text="Click to Display Login Dialog" OnClientClick="showDialog(); return false;" />
        <div class="divInnerForm"></div>
        <div class="divDialog" style="display: none">
            <table style="width: 100%;">
                <tr>
                    <td>First Name: <asp:TextBox ID="txtFirstName" runat="server" Text=""></asp:TextBox></td>
                    <td>Last Name: <asp:TextBox ID="txtLastName" runat="server" Text=""></asp:TextBox></td>
                </tr>
                <tr>
                    <td>
                        How Old are You?
                        <asp:DropDownList ID="ddlAge" runat="server">
                            <asp:ListItem Value="1">1</asp:ListItem>
                            <asp:ListItem Value="2">2</asp:ListItem>
                            <asp:ListItem Value="3">3</asp:ListItem>
                        </asp:DropDownList>
                    </td>
                    <td>
                        How Many Siblings do You Have?
                        <asp:DropDownList ID="ddlNumberSiblings" runat="server">
                            <asp:ListItem Value="1">1</asp:ListItem>
                            <asp:ListItem Value="2">2</asp:ListItem>
                            <asp:ListItem Value="3">3</asp:ListItem>
                            <asp:ListItem Value="4">4</asp:ListItem>
                        </asp:DropDownList>
                    </td>
                </tr>
                <tr>
                    <td>
                        What is your birthday?
                        <input type="text" id="datepicker" name="datepicker" />
                    </td>
                </tr>
                <tr>
                    <td>
                        Please Choose a Picture to Upload:
                        <asp:FileUpload ID="fupUserPicture" runat="server" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnUserPicture_Click" />
                    </td>
                </tr>
            </table>
        </div>
    </form>

...das jQuery-Skript, das zeigt den dialog und legt es in die form...

    function showDialog() {
        $('.divDialog').dialog({
            modal: true, show: 'slide', width: 500,
            open: function (event, ui) {
                $('.divInnerForm').append($(this).parent());
            }
        });
    }

...und den code hinterher mit OnClick-Funktion....

 protected void btnUserPicture_Click(object sender, EventArgs e)
        {
            string fileName = "";
            if (fupUserPicture.HasFile)
            {
                try
                {
                    fileName = Path.GetFileName(fupUserPicture.FileName);
                    fupUserPicture.SaveAs(Server.MapPath("~/Images/" + fileName));
                }
                catch (Exception ex)
                {
                }
                btnSubmit.PostBackUrl = "~/Profile.aspx?pic=" + fileName;
            }
        }

EDIT: Ok, hier ist, wie der submit-button in dem dialog tatsächlich gerendert als HTML. Ich denke, das könnte das problem sein. Wie Sie sehen können, wird die javascript-onclick-stellt einfach "Profil.aspx" als post-url zurück, obwohl es mir scheint, jede server-Seite code, der ausgeführt werden soll in Erster Linie. Dies ist in der form...

<input id="btnSubmit" type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("btnSubmit", "", false, "", "Profile.aspx", false, false))" value="Submit" name="btnSubmit">

..und hier ist, wie es renderes wenn ich entfernen btnSubmit.PostBackUrl = "~/Profile.aspx" von der Page_Load() - Funktion....

<input id="btnSubmit" type="submit" value="Submit" name="btnSubmit">

EDIT 2: ok also ich habe einer weitere versteckte asp-button außerhalb des dialogs, und die Schaltfläche in das Dialogfeld jetzt ruft eine javascript-Funktion auslöst, die OnClick Ereignis des verborgenen Knopf. Gleiche Sache, die javascript-Funktion läuft gut, aber btnHidden_Click() Funktion does not run! ich bin bei einem Totalverlust ich an diesem Punkt haben buchstäblich keine Ahnung, warum das nicht funktioniert. Hier ist die neue Versteckte Schaltfläche, die außerhalb des dialog-div, aber in der form wie man sehen kann....

 </div>
        <asp:Button ID="btnHidden" runat="server" Text="" Visible="false" ClientIDMode="Predictable"  OnClick="btnHidden_Click"/>
    </form>

...hier ist die Schaltfläche in das Dialogfeld mit dem OnClientClick-Ereignis, was wie ich schon sagte, läuft wunderbar...

                <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="forcebtnHiddenClick(); return false;" />

Ist hier der OnClick-Funktion in der code-behind für btnHidden, obwohl es genau das gleiche wie vorher...

   protected void btnHidden_Click(object sender, EventArgs e)
        {
            string fileName = "";
            if (fupUserPicture.HasFile)
            {
                try
                {
                    fileName = Path.GetFileName(fupUserPicture.FileName);
                    fupUserPicture.SaveAs(Server.MapPath("~/Images/" + fileName));
                }
                catch (Exception ex)
                {
                }
                Response.Redirect("~/Profile.aspx?pic=" + fileName);
            }
        }

...und die javascript-Funktion, die läuft, aber aus irgendeinem Grund nicht Folge btnHidden_Click läuft...

function forcebtnHiddenClick(e) {
    //__doPostBack('btnHidden', 'OnClick');
    $('#btnHidden').trigger('click');
}

..wie du sehen kannst, habe ich beides ausprobiert .trigger('click') und __doPostBack(), beide ohne Erfolg.

EDIT: Ok, also das problem ist definitiv die

 function forcebtnHiddenClick() {
            __doPostBack('btnHidden', '');
}

Funktion, die eigentlich nicht auslösen die btnHidden_Click Veranstaltung. Wenn ich btnHidden sichtbar und klicken Sie es direkt, die btnHidden_Click - Funktion läuft einwandfrei.

EDIT: Nach TONNEN zu suchen, fand dieses und bekam es zu arbeiten...

 function forcebtnHiddenClick() {
            <%= ClientScript.GetPostBackEventReference(btnHidden, string.Empty) %>;
        }

Ich weiß nicht, warum

__doPostBack(<%= btnHidden.ClientID %>, '') 

nicht funktioniert.

  • was ist die Anweisung $('.divInnerForm').append($(this).parent()); versucht, chaeiev? versuchen Sie, kommentieren Sie es aus..
  • Ich verstehe nicht, wenn Sie sagen, die Taste post Rücken gut, aber das onclick nicht Feuer.Sie die beim klicken-Ereignis generieren, die ein postback.Sind Sie sagen, wenn die Seite geht durch ein postback ,den button-event-handler wird nicht getroffen wird, wenn Sie einen break-Punkt auf?
  • ohne das script jQuery bewegt sich der dialog außerhalb der form, wenn die Seite gerendert wird
  • Wenn ich die PostBackUrl-Eigenschaft auf die Schaltfläche post zurück an die url ich ihn an. Jedoch, die Einstellung, die das OnClick-Ereignis wird nicht in das Ereignis auslösen. Also, wenn ich PostBackUrl innerhalb des Ereignis-Funktion, sagen btn_Click, es wird einfach auf die gleiche Seite zurück. Aber wenn ich PostBackUrl in der Funktion Page_Load, oder in der asp-markup auf die Schaltfläche post zurück zu der beabsichtigten Seite. Also das OnClick-event einfach nicht Feuer.
  • Ja, dass ist es, was ich sage, tut mir Leid.
  • versuchen Sie $(this).parent().appendTo('form') und mir sagen, ob es funktioniert
  • Die "ClientScript.GetPostBackEventReference" code erzeugen soll, die javascript-code aufrufen, __doPostBack(). Es ist tatsächlich besser zu bedienen ist, b/c es wird geben Sie, was Funktion ASP.Net für die PostBack - (falls Sie keine änderungen vornehmen). Wenn Sie den Quellcode anschauen, sehen Sie die javascript erstellt. Vergleichen Sie den code, den Sie schrieb zu nennen "__doPostBack" manuell, um zu sehen, warum es vielleicht nicht geklappt haben. In deinem letzten code-Beispiel, Sie haben nicht die Anführungszeichen um die Schaltfläche ClientID - ich weiß nicht, ob das ist, was Ihr code eigentlich war, aber wenn es so ist, das könnte schon das problem.

InformationsquelleAutor MassStrike | 2013-05-08
Schreibe einen Kommentar