Панель проверки и обновления Jquery вместе - PullRequest
1 голос
/ 10 июля 2011

Я использую плагин jQuery Validation 1.8.1. Он работает отлично, как и ожидалось, но проблема началась, когда я добавил панель обновления в одну на своих страницах контента. Здесь я добавил

    $(function () {
     //Code that runs before update panel is fired.

    //Listen for update panel
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    //Re-initialize jquery after an auto post back.
    function EndRequestHandler(sender, args) {
        Validate();
    } 
});

В сторонумоя панель обновлений для вызова метода Validate при каждом частичном возврате сообщения, который записывается на главной странице следующим образом:

    <script type="text/javascript">

    $().ready(function() {

    Validate();

    });
    </script>

    <script type="text/javascript">
    function Validate();
    {
    var container = $('div.container');
// validate the form when it is submitted
var validator = $("#form2").validate({
    errorContainer: container,
    errorLabelContainer: $("ul", container),
    wrapper: 'li',
    meta: "validate"            
});  
    }
    </script>         

Просто добавив эту панель обновления, я вижу, когда я нажимаю кнопку «Отправить», она проверяет ипоказывает требуемое сообщение в течение 2 секунд, а затем отправляет форму.Какой обходной путь для этого?

Ответы [ 3 ]

3 голосов
/ 11 июля 2011

Подпишитесь на событие initializeRequest и проверьте, что обработчик события является действительной формой. Если нет отмены обратной передачи:

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(instance_initializeRequest);

function instance_initializeRequest(sender, args) {
        if (!$("#form2").validate().form()) {
            args.set_cancel(true);
        }
    }
1 голос
/ 11 июля 2011

Я не уверен, что понял, но IMO, вам следует прервать обратную передачу в случае ошибки проверки:

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest);

function InitializeRequest(sender, args)
{
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (! Validate()) {
        prm.abortPostBack();
    }    
}
0 голосов
/ 11 июля 2011

Здесь, добавив этот код, моя проблема с отправкой страницы обратно, несмотря на наличие ошибки проверки, была решена, но появилась новая, теперь при выборе основного раскрывающегося списка мой дочерний раскрывающийся список не заполняется. Целевой метод заполнения дочернего выпадающего списка вообще не стреляет ...

  <asp:UpdatePanel ID="updRole" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    <script type="text/javascript" >
        Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest    (instance_initializeRequest);
        function instance_initializeRequest(sender, args) {
            if (!Validator())
             {                
                args.set_cancel(true);
             } 
          } 
       </script>
    </ContentTemplate>
    </asp:UpdatePanel>

Этот фрагмент кода, который у меня есть на главной странице, где функция validator () запускается в событии .ready (), запускается по умолчанию, но проблема заключалась в добавлении панели обновления на любую страницу содержимого. показывается в течение 2 секунд), но страница отправляется обратно.

    <script type="text/javascript">
        $.validator.setDefaults({
        invalidHandler: function (form, validator) {    
    alert(“hi”);
        }
    });

    $().ready(function () {
        Validator();         

    });

    function Validator() {

        var container = $('div.container');
        // validate the form when it is submitted
        var validator = $("#form1").validate({
            errorContainer: container,
            errorLabelContainer: $("ul", container),
            wrapper: 'li',
            meta: "validate"
        });
    }

...