在 ASP.NET 代码中通过 javascript 重置 Jquery 验证后停止回发

Posted

技术标签:

【中文标题】在 ASP.NET 代码中通过 javascript 重置 Jquery 验证后停止回发【英文标题】:Stop postback after reseting Jquery validation by javascript in ASP.NET Code 【发布时间】:2015-12-29 11:50:57 【问题描述】:

我在该表单中有一个表单,有两个按钮和两个文本框,单击第一个按钮验证后,单击第一个文本框的第二个按钮验证后第一个文本框字段出现,但回发。

如何在重置 jquery 验证时防止回发。

      <form id="form1" runat="server">

                    <div id="div1" class="form-horizontal">
                                            <div class="form-group">
                                                <div class="col-md-3">
                                                    <asp:TextBox  ID="TextBox1" runat="server"></asp:TextBox>  
                                                </div>

                                            </div>
                                            <div class="form-group">
                                                <div class="col-md-3">

                                                    <asp:Button ID="Button1"  CssClass="submit btn btn-primary " runat="server" Text="Submit" />
                                                </div>
                                            </div>
                                        </div>


                            <div id="div2" class="form-horizontal">
                                            <div class="form-group">
                                                <div class="col-md-3">

                                                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                                                     </div>
                                            </div>
                                            <div class="form-group">
                                                <div class="col-md-3">
                                                    <asp:Button ID="Button2" CssClass="btn btn-primary" runat="server" Text="Submit" />
                                                </div>
                                            </div>
                                        </div>
                </form>




<script>
        $(document).ready(function () 
            $('#Button1').click(function () 
                $('#form1').validate(
                    errorClass: 'help-block animation-slideDown',
                    errorElement: 'div',
                    errorPlacement: function (error, e) 
                        e.parents('.form-group > div').append(error);
                    ,
                    highlight: function (e) 
                        $(e).closest('.form-group').removeClass('has-success has-error').addClass('has-error');
                        $(e).closest('.help-block').remove();
                    ,
                    success: function (e) 
                        e.closest('.form-group').removeClass('has-success has-error');
                        e.closest('.help-block').remove();
                    , 
                         rules: 
                             'TextBox1': 
                                required: true,
                            ,
                        ,
                        messages: 
                            'TextBox1': 
                                required: 'ProvideYourCurrentPassword',
                            ,
                        ,
                );
                $("#TextBox2").rules('remove');
            );
            $('#Button2').click(function () 
                $('#form1').validate(
                    errorClass: 'help-block animation-slideDown',
                    errorElement: 'div',
                    errorPlacement: function (error, e) 
                        e.parents('.form-group > div').append(error);
                    ,
                    highlight: function (e) 
                        $(e).closest('.form-group').removeClass('has-success has-error').addClass('has-error');
                        $(e).closest('.help-block').remove();
                    ,
                    success: function (e) 
                        e.closest('.form-group').removeClass('has-success has-error');
                        e.closest('.help-block').remove();
                    ,

                    rules: 
                             'TextBox2': 
                                required: true,
                            ,
                        ,
                        messages: 
                            'TextBox2': 
                                required: 'ProvideYourCurrentPassword',
                            ,
                        ,
                );
                $("#TextBox1").rules('remove');
            );
        );
    </script>

【问题讨论】:

为每个buttone.preventDefault(),一旦formvalidation是基于valid或不仅仅是submit表单或保持原样.. 【参考方案1】:

试试这个脚本,它可能对你有帮助。

<script>
        $(document).ready(function () 
            $('#form1').validate(
                errorClass: 'help-block animation-slideDown',
                errorElement: 'div',
                errorPlacement: function (error, e) 
                    e.parents('.form-group > div').append(error);

                ,
                highlight: function (e) 
                    $(e).closest('.form-group').removeClass('has-success has-error').addClass('has-error');
                    $(e).closest('.help-block').remove();
                ,
                success: function (e) 
                    e.closest('.form-group').removeClass('has-success has-error');
                    e.closest('.help-block').remove();
                ,
            );
            $('#Button1').click(function () 
                $("#TextBox1").rules("add",  required: true, messages:  required: '<%=ValidationMessage.ProvideYourCurrentPassword%>'  );
                $("#TextBox2").each(function () 
                    $(this).rules('remove');
                );
            );


            $('#Button2').click(function () 
                $("#TextBox2").each(function () 
                    $(this).rules('add', 
                        required: true
                    );
                );
                $("#TextBox1").each(function () 
                    $(this).rules('remove');
                );
            );

        );
    </script>

【讨论】:

【参考方案2】:

Sys.Application.add_load 中发布您的 Jquery 代码

$(function()
            Sys.Application.add_load(function ()  
           // your Java script Code here
                   );

            );

【讨论】:

将我的 jquery 代码放入 Sys.Application.add_load 后 jquery 验证停止工作,但感谢您的回复

以上是关于在 ASP.NET 代码中通过 javascript 重置 Jquery 验证后停止回发的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC Core 3.1 中通过 jQuery 为部分视图附加 html 的问题

asp.net中通过post的方式导出文件操作。

在 Asp.net 中通过 Word doc 自动填写 Web 表单

在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源

如何在 ASP.NET MVC 中通过 Ajax 提交表单?

如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)