如何在仍然允许javascript运行的同时阻止回发?

时间:2014-05-30 17:02:23

标签: c# asp.net

此Asp.Net页面的一部分包含:

<asp:Panel runat="server" DefaultButton="get">
    Enter Employee Name or Click Search to Return All:
    <asp:TextBox runat="server" ID="participant" ></asp:TextBox>
    <asp:Button runat="server" ID="get" UseSubmitBehavior="false" Text="Search" />
</asp:Panel>

由此提供支持:

$(document).ready(function () {
            $("#get").click(function (e) {
                e.preventDefault();
                document.getElementById('<%= userTable.ClientID %>').style.display = "block";
                getUserNames();
            });
            $("#content_contentPlaceHolder_participant").keypress(function (event) {
                if (event.keyCode == 13) {
                    $("#get").click();
                }
            });
        });

除了Chrome之外,它无处不在。使用回车键在Chrome中提交此字段会导致整页重新加载。

我尝试在后面的代码中添加它,但它阻止了javascript被触发:

participant.Attributes.Add("onkeydown", "return (event.keyCode!=13);");

如何修复此问题,以便输入键不会导致回发,但仍会触发JS?

1 个答案:

答案 0 :(得分:0)

我通过添加额外的preventDefault()解决了这个问题。

$(document).ready(function () {
        $("#get").click(function (e) {
            e.preventDefault();
            document.getElementById('<%= userTable.ClientID %>').style.display = "block";
            getUserNames();
        });
        $("#content_contentPlaceHolder_participant").keypress(function (event) {
            if (event.keyCode == 13) {
                event.preventDefault(); // <-- added this line
                $("#get").click();
            }
        });
});