Ich versuche, Javascript auszuführen, bevor das Klickereignis meiner Schaltfläche auf der Serverseite auftritt, aber der Javascript-Code wird ausgeführt, und der serverseitige Code wird direkt danach ausgeführt, egal was passiert. Folgendes habe ich:

<script type="text/javascript" language="javascript">
  $(document).ready(function() {
    SubmitClick = function() {
        if ($("#<%= fuFile.ClientID %>").val() == "") {
            $("#error").html("File is required");

            return false;
        }
    }
  });
</script>

<asp:FileUpload ID="fuFile" runat="server" />

<asp:Button ID="btnSubmit" runat="server" Text="Submit"
  OnClientClick="SubmitClick()" UseSubmitBehavior="false"
  OnClick="btnSubmit_Click" />

<span id="error"></span>

Ich dachte, dass das Setzen von UseSubmitBehavior="false" und das Zurückgeben von false in der Javascript-Funktion funktionieren würde, aber das ist nicht der Fall. Meine Fehlermeldung wird für eine Sekunde angezeigt, bevor der serverseitige Code ausgeführt wird.

Was mache ich hier falsch?

3
Steven 9 Okt. 2012 im 01:17

4 Antworten

Beste Antwort

Um einen Client-Klick abzubrechen, fügen Sie normalerweise dieses return false; hinzu.

Sie können Ihren Code aktualisieren, um dies zu tun, und es sollte funktionieren: OnClientClick="return SubmitClick();"

12
Jeremy 8 Okt. 2012 im 21:22

Was für mich funktioniert hat war: Entfernen Sie OnClientClick="SubmitClick()" und setzen Sie UseSubmitBehavior wieder auf true.

Ändern Sie dann Ihre $(document).ready() Methode in

$(document).ready(function () {
    $('#btnSubmit').click(function () {
        if ($("#<%= fuFile.ClientID %>").val() == "") {
            $("#error").html("File is required");

            return false;
        }

        return true;
    });

});
2
nick_w 8 Okt. 2012 im 21:34

Wenn Sie JQuery verwenden:

$btn.on("click", function (e) {
    e.preventDefault();
}
6
Jupaol 8 Okt. 2012 im 21:29

Sie müssen die Stornierung des übermittelten Verhaltens mithilfe der Rückgabe im OnClientClick-Ereignis zurückgeben.

Versuche dies

OnClientClick="return SubmitClick()"
0
Sushanth -- 8 Okt. 2012 im 21:22