在表单中表单无效时防止回发

时间:2018-01-24 11:26:45

标签: asp.net vb.net html5 webforms html5-formvalidation

我已经制作了表单并添加了表单验证。这是我在ascx代码文件中使用输入字段的代码:

return Mono.zip(someService.getSomeData(), oneMoreService.getMoreData())
        .map(t -> {              
            X data1 = t.getT1();
            Y data2 = t.getT2();

            MyObject myObject = new MyObject();
            //...
            return myObject;
        });

在后面的代码中,我在<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>

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

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

我只能在表单有效时使用回发?

1 个答案:

答案 0 :(得分:0)

您可以在脚本标记或文件

中添加此代码
var originalDoPostback = __doPostBack;
__doPostBack = function (p1, p2) {

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

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