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

Я использую

асп. чистая MVC 3 JQuery подтвердить ненавязчивый javascript.

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

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

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

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

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

 

var $dialog = $('
').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);

                        }
                    }
            });

Это всегда возвращает истину.

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

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

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

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

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

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

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

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

chobo2
29424 репутация

4 ответов


  • 9 рейтинг

    Нечто подобное должно сработать:

        $("#my-button").click(function (event) {
            event.preventDefault();
    
            $("#my-form").validate();
    
            if ($("#my-form").valid()) {
                // ...
            }
        });
    
    ответ дан Matt Greer, с репутацией 48725, 28.02.2011
  • 7 рейтинг

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

    $("
    ").dialog(...)
    $.validator.unobtrusive.parse("form")
    

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

    ответ дан Clay, с репутацией 5020, 15.04.2012
  • 1 рейтинг
    $("#my-button").click(function (event) {
        event.preventDefault();
    
        $.validator.unobtrusive.parse("#my-form");
    
        if ($("#my-form").valid()) {
            // ...
        }
    });
    
    ответ дан programad, с репутацией 693, 8.11.2011
  • 0 рейтинг

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

    вы можете найти пример того, как Как: реализовать удаленную проверку в ASP. NET MVC

    ответ дан AbdouMoumen, с репутацией 3456, 28.02.2011