FormValidation.io не будет работать в UpdatePanel?

Я использую плагин 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'
                                }
                            }
                        },
                ...
            }
        }); } });

Я также попытался сделать декларативную проверку с тем же результатом. Я также попытался повторно инициализировать проверку с помощью консоли после обратной передачи, но безуспешно.

Я немного расстроен, потому что я попробовал все, что я знаю, чтобы сделать. Спасибо!

1 ответ

Решение

У меня та же проблема. Как вы уже видели, проверка может работать изначально, но после обратной передачи она перестает работать. Я попытался использовать функцию javascript pageLoad(), которая вызывается средой asp после завершения обратной передачи.

Я обнаружил, что установка formValidation в null каждый раз после каждой обратной передачи, кажется, решает проблему. Смотрите мой код ниже. Я вызываю функцию isFormValid() из моей кнопки отправки asp.

<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({....
Другие вопросы по тегам