【问题标题】:FormValidation.io won't work within UpdatePanel?FormValidation.io 不能在 UpdatePanel 中工作?
【发布时间】:2015-08-17 14:01:09
【问题描述】:

我正在使用 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'
                                }
                            }
                        },
                ...
            }
        }); } });

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

我有点沮丧 b/c 我已经尝试了所有我知道要做的事情。谢谢!

【问题讨论】:

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


    【解决方案1】:

    我也有同样的问题。正如您所看到的,验证最初可以工作,但在回发之后,它就停止工作了。我尝试使用 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({....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多