0

我制作了一个表单并添加了表单验证。这是通过在我的 ascx 代码文件中使用我的输入字段的代码来完成的:

<div class="form-group">
    <label for="FirstName">
        <asp:Localize ID="Localize5" runat="server" meta:resourcekey="fieldText" />
    </label>
    <asp:TextBox ID="myTextField" runat="server" CssClass="form-control" />
</div>

在后面的代码中,我在Me.Load被触发时执行此操作:

myTextField.Attributes.Add("required", "required")

当我单击提交按钮时会出现问题:

<button type="submit" class="btn btn-primary" runat="server" id="btnSumbit">
    <asp:Localize ID="Localize24" runat="server" meta:resourcekey="submitText" />
</button>

背后的代码

Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSumbit.ServerClick
    Response.Redirect("https://stackoverflow.com")
End Sub

此事件阻止浏览器中的表单验证。因为它正在回发。这是呈现的 HTML:

<button onclick="__doPostBack('ctl53$btnSumbit','')" id="ctl53_btnSumbit" type="submit" class="btn btn-primary">
    Submit
</button>

当表单有效时,我只能使用回发做什么?

4

1 回答 1

0

您可以将此代码添加到脚本标签或文件中

var originalDoPostback = __doPostBack;
__doPostBack = function (p1, p2) {

    if (document.querySelectorAll('input:invalid').length === 0) {
        originalDoPostback(p1, p2);
    }
};

这将更__doPostBack改为您的function(p1, p2) { /* code stuff */ }. 如果没有无效的输入字段,则执行原始回发 _(named originalDoPostback),否则不执行任何操作。

于 2018-01-24T11:26:45.337 回答