Как использовать asp.net mvc 3 jquery validate с диалоговым окном jquery, которое отправляет ajax? - PullRequest
6 голосов
/ 28 февраля 2011

Я использую

asp.net mvc 3 jquery validate uncostructive javascript.

Я пытаюсь записать все свои проверки на стороне сервера с помощью аннотаций и затем получить новую функцию mvc 3позаботьтесь о клиентской стороне.

У меня есть диалоговое окно, в котором есть кнопка (просто кнопка, а не кнопка отправки), по которой я хочу публиковать данные на сервере через ajax.

Поэтому, когда пользователь нажимает на кнопку, я отправляю форму и возвращаю false, чтобы отменить публикацию.

Я думал, что это вызовет проверку, но это не так.Как сделать триггер проверки на стороне клиента?

Редактировать

<form method="post" id="TaskFrm" action="/Controller/Action">

            <input type="text" value="" name="Name" id="Name" data-val-required="Name field cannot be left blank" data-val-length-max="100" data-val-length="task cannot exceed 100 characters" data-val="true">
</form>

var $dialog = $('<div></div>').dialog(
            {
                width: 580,
                height: 410,
                resizable: false,
                modal: true,
                autoOpen: false,
                title: 'Basic Dialog',
                buttons:
                    {
                        Cancel: function ()
                        {
                            $(this).dialog('close');
                        },
                        'Create Task': function ()
                        {
                            var createSubmitFrmHandler = $(my.selectors.createFrm).live('submit', function ()
                            {
                                alert('hi');
                                return false;
                            });

                            createSubmitFrmHandler .validate();
                            var a = createSubmitFrmHandler .valid();

                            alert(a);

                        }
                    }
            });

Это всегда возвращает true.

Редактировать 2

, если я помещу кнопку отправки в форму, она покажет проверку на стороне клиента (я использую jquery для возврата false, как показано в моем коде).

Так что это означает, что у меня есть сценариии все, но это не работает по неизвестным причинам, когда я пытаюсь сделать это программно.

Редактировать 3

Я застрял файлы проверки jquery && jquery.validate.unobtrusiveна главной странице.Но когда я вставляю их в частичное представление, которое содержит поля, которые загружаются, а затем принудительно отправляют подтверждение, запускается проверка.

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

Редактировать 4

Я думаю, что это просто jquery.validate.unobtrusive, который нужно по какой-то причине каждый раз загружать.Хотя я не уверен, почему.

Ответы [ 4 ]

9 голосов
/ 28 февраля 2011

Примерно так должно получиться:

    $("#my-button").click(function (event) {
        event.preventDefault();

        $("#my-form").validate();

        if ($("#my-form").valid()) {
            // ...
        }
    });
7 голосов
/ 15 апреля 2012

Проблема может быть связана с добавлением элементов в DOM после первоначальной загрузки ненавязчивого скрипта. Вы можете принудительно прикрепить обработчики проверки новых элементов, вызвав $.validator.unobtrusive.parse("form") после создания диалога.

$("<div></div>").dialog(...)
$.validator.unobtrusive.parse("form")

Это решило нашу аналогичную проблему, хотя мы отображаем форму в диалоге.

1 голос
/ 08 ноября 2011
$("#my-button").click(function (event) {
    event.preventDefault();

    $.validator.unobtrusive.parse("#my-form");

    if ($("#my-form").valid()) {
        // ...
    }
});
0 голосов
/ 28 февраля 2011

Это можно сделать с помощью функции ASP.NET MVC, которая называется Remote Validation.Все, что вам нужно сделать, это украсить свойство, которое вы хотите проверить, с атрибутом [Remote], передавая имя метода, который выполняет проверку, и контроллер, на котором он существует.1005 * Как: реализовать удаленную проверку в ASP.NET MVC

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