Проверка диалогового окна jQuery UI - PullRequest
0 голосов
/ 19 января 2012

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

Вот мой сценарий:

$(function () {

    $('a.editPersonLink').live("click", function (event) {
        loadDialog(this, event, '#personList');
        $.validator.unobtrusive.parse('#editPersonContainer');
    });

    $(".deleteButton").live("click", function(e) {
        e.preventDefault();
        var $btn = $(this);
        var $msg = $(this).attr("title");

        confirmDelete($msg, 
            function() {
                deleteRow($btn, $target);
            });
    });

});

function loadDialog(tag, event, target) {
    event.preventDefault();
    var $loading = $('<img src="../../Content/images/ajaxLoading.gif" alt="loading" class="ui-loading-icon">');
    var $url = $(tag).attr('href');
    var $title = $(tag).attr('title');
    var $dialog = $('<div></div>');
    $dialog.empty();
    $dialog
        .append($loading)
        .load($url)
        .dialog({
            autoOpen: false
            ,title: $title
            ,width: 800
            ,modal: true
            ,minHeight: 200
            ,show: 'slide'
            ,hide: 'clip'
        });

    $dialog.dialog( "option", "buttons", {
        "Save": function () {
            var dlg = $(this);
            $.ajax({
                url: $url,
                type: 'POST',
                data: $("#formData").serialize(),
                success: function (response) {
                    $(target).html(response);
                    dlg.dialog('close');
                    dlg.empty();
                    $("#ajaxResult").hide().html('Record saved').fadeIn(300, function () {
                        var e = this;
                        setTimeout(function () { $(e).fadeOut(400); }, 2500);
                    });
                },
                error: function (xhr) {
                    if (xhr.status == 400) 
                        dlg.html(xhr.responseText, xhr.status);     /* display validation errors in edit dialog */
                    else 
                        displayError(xhr.responseText, xhr.status); /* display other errors in separate dialog */

                }
            });
        },
        "Cancel": function() { 
            $(this).dialog("close");
            $(this).empty();
        }
    });

    $dialog.dialog('open');
};

Прямо в верхней части страницы. Я пытаюсь заставить форму распознавать проверку из частичного представления в диалоге с помощью оператора:

$.validator.unobtrusive.parse('#editPersonContainer');

editPersonContainer - это имя div, содержащего данные в частичном представлении, загруженном в диалоговое окно.

Суть в том, что проверка не распознана. Я делаю вызов validator.unobtrusive.parse не в том месте, или я что-то здесь упускаю?

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Я закончил тем, что изменил свой сценарий, чтобы использовать методы, описанные здесь

Проверка теперь работает в моих диалоговых окнах jQuery UI.

0 голосов
/ 05 апреля 2012

Привет, я подошел к вашему вопросу, когда искал то же самое.

Я включаю это перед вызовом ajax для проверки на стороне клиента:

if (ModelState.IsValid) {}

Я делаю статью с полным проектом на

Проверка клиента / Сервер JqueryUI Dialog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...