使用JavaScript停止按钮的OnClick事件

3
我想在服务器端按钮点击事件发生之前运行一些JavaScript代码,但无论如何JavaScript代码都会运行,然后服务器端代码也会立即运行。以下是我的代码:
<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>

我曾认为在javascript函数中设置UseSubmitBehavior="false"并返回false会起作用,但事实并非如此。我的错误消息将在服务器端代码运行之前显示一秒钟。

我在这里做错了什么?


一个很好的阅读材料,可以告诉你何时应该返回false。http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ - CraigW
4个回答

12

通常取消客户端点击的方法是添加return false;

您可以更新代码以执行以下操作: OnClientClick="return SubmitClick();",它应该可以正常工作。


6
如果您正在使用jQuery:
$btn.on("click", function (e) {
    e.preventDefault();
}

你需要将此与将 UseSubmitBehavior 设置为 true 结合使用,否则它只会无论如何都进行回传。 - nick_w

3
我的建议是: 删除 OnClientClick="SubmitClick()",并将 UseSubmitBehavior 设置为 true。 然后将你的 $(document).ready() 方法更改为:
$(document).ready(function () {
    $('#btnSubmit').click(function () {
        if ($("#<%= fuFile.ClientID %>").val() == "") {
            $("#error").html("File is required");

            return false;
        }

        return true;
    });

});

0

您需要在OnClientClick事件中使用return返回已提交行为的取消。

试试这个

OnClientClick="return SubmitClick()"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接