JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮

JavaScript form submit doesn't fire asp server-side click function of the submit button

本文关键字:端点 服务器 功能 按钮 提交 asp fire 表单提交 JavaScript      更新时间:2023-09-26

我使用了一个事件侦听器来阻止我的asp:button(提交)操作,因为我想在表单真正提交之前用javascript函数验证它。

formInstance.addEventListener('submit', function (event) {
    event.preventDefault(); 
}, false);

这是按钮:

<asp:Button ID="btnCreateForm" CssClass="submit-form button" runat="server" 
    Text="Save Form" OnClick="btnCreateForm_Click" 
        OnClientClick="Sharpforms.checkFormEntry()" />

被解雇的javascript:

checkFormEntry: function () {
    var formName = document.getElementById("txtFormName");
    if (formName.value.trim() == "") {
        alert("Please fill in a valid form name!");
        return false;
    }
    else {
        //formInstance.submit();
        return true;
    }
}

显然,javascript submit()确实提交了表单,因为页面正在重新加载,但我意识到它不再进入我的ASP端btnCreateForm_Click函数:

protected void btnCreateForm_Click(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Test if the button has been clicked.");
}

当评论我的表单事件监听器和submit()并尝试以本机方式提交它时,他会毫无问题地进入点击函数。但是我不可能在客户端查看我的表格。我错过了什么?

您必须将return添加到OnClientClick事件中。如果函数返回true,则发生回发。如果函数返回false,则回发将被取消。

<asp:Button ID="btnCreateForm" CssClass="submit-form button" runat="server" 
    Text="Save Form" OnClick="btnCreateForm_Click" 
        OnClientClick="return Sharpforms.checkFormEntry()" />

此外,通过这种方式可以删除事件侦听器。