asp.net - FormValidation.io 无法在 UpdatePanel 中工作?

标签 asp.net twitter-bootstrap validation updatepanel formvalidation-plugin

我正在使用 formvalidation.io 插件在我的页面上执行客户端验证。我最近遇到一个问题,即在 UpdatePanel 内回发后无法进行验证(已验证的控件也在 UpdatePanel 内)。

UP开始:

<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="ActivityType" EventName="SelectedIndexChanged" />
                        <asp:AsyncPostBackTrigger ControlID="ActivitySubType" EventName="SelectedIndexChanged" />
                    </Triggers> .... </asp:UpdatePanel>

验证按预期工作,直到发生回发。每次 ActivityType 或 ActivitySubType 执行回发时,所有验证都会消失。

Javascript/jQuery:

 $(function () {
        docReady(); 
    });

    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function () { docReady(); });

    function docReady() {
        $("#aspnetForm").formValidation({
            message: 'This value is not valid',
            feedbackIcons: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {

                ctl00$maincontent$ActivityDate:
                        {
                            validators: {
                                notEmpty: {
                                    message: 'Date / Time is required'
                                }
                            }
                        },
                ...
            }
        }); } });

我也尝试过以声明方式进行验证,并得到相同的结果。我还尝试在回发后使用控制台重新初始化验证,但没有成功。

我有点沮丧,因为我已经尝试了我所知道的一切。谢谢!

最佳答案

我也有同样的问题。正如您所看到的,验证最初可以工作,但在回发后,它就会停止工作。我尝试使用 javascript pageLoad() 函数,该函数在回发完成后由 asp 框架调用。

我发现在每次回发后将 formValidation 设置为 null 似乎可以解决问题。请参阅下面的我的代码。我从我的 asp 提交按钮调用 isFormValid() 函数。

<script type="text/javascript">

    function isFormValid() {
        var formValidation = $('form').data('formValidation');
        formValidation.validate();
        if (formValidation.isValid() != true) {
                return false;
        }
        return true;
    }
    // called by Ajax Framework after postback
    function pageLoad() {
        setupValidation();
    }

    function setupValidation() {
         $('form').data('formValidation',null);
         $('form').formValidation({
            framework: 'bootstrap',
            icon: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            }
        })
    });
</script>

根据您的情况 - 尝试以下操作:

$("#aspnetForm").data('formValidation',null);
$("#aspnetForm").formValidation({....

关于asp.net - FormValidation.io 无法在 UpdatePanel 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052391/

相关文章:

c# - 将图像映射到 asp.net mvc 中的页面

jquery - 使用 Bootstrap 将表格中的 2 列转换为一列以用于小显示尺寸

jquery - Bootstrap Accordion 嵌套网格

jquery - 只接受整数的数字输入类型?

ruby-on-rails - ActiveRecord 未使用 .build 在 has_many 关联上设置外键

c# - 如何关闭与 Firebird 数据库的连接

c# - 我们如何让 DynamicData 与 EFPocoAdapter 一起工作?

javascript - 如何使 Bootstrap 崩溃顺利

Javascript 表单验证,if 语句太多?

C#类型转换,如何避免报错?