简体   繁体   English

使用javascript停止按钮OnClick事件

[英]Stopping button OnClick event with javascript

I'm trying to run some javascript before my button's click event happens on the server side, but the javascript code runs, and the server side code runs right after that no matter what. 我试图在我的按钮的点击事件发生在服务器端之前运行一些javascript,但是javascript代码运行,并且服务器端代码在此之后运行,无论如何。 Here's what I have: 这就是我所拥有的:

<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>

I thought that setting UseSubmitBehavior="false" and returning false in the javascript function would work, but it's not. 我认为设置UseSubmitBehavior="false"并在javascript函数中返回false会起作用,但事实并非如此。 My error message gets displayed for a second before the server side code runs. 在服务器端代码运行之前,我的错误消息会显示一秒钟。

What am I doing wrong here? 我在这做错了什么?

Typically to cancel a client click you would add this return false; 通常要取消客户端单击,您将添加此return false;

You can update your code to do this and it should work: OnClientClick="return SubmitClick();" 您可以更新代码来执行此操作,它应该可以工作: OnClientClick="return SubmitClick();"

If you are using JQuery: 如果您使用的是JQuery:

$btn.on("click", function (e) {
    e.preventDefault();
}

What worked for me was: Remove OnClientClick="SubmitClick()" and set UseSubmitBehavior back to true. 对我UseSubmitBehavior是:删除OnClientClick="SubmitClick()"并将UseSubmitBehavior设置回true。

Then change your $(document).ready() method to 然后将$(document).ready()方法更改为

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

            return false;
        }

        return true;
    });

});

You need to return the cancellation of the submitted behavior using return in OnClientClick event. 您需要使用OnClientClick事件中的return返回已提交行为的取消。

try this 尝试这个

OnClientClick="return SubmitClick()"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM