Подтвердить что ты не робот

JQuery 1.6 $('form'). Validate() не работает в IE7 и IE8

UPDATE: Я создал новый проект MVC 3 с Razor HTML 5, затем я обновил проект с помощью NuGet в JQuery 1.6, и плагин проверки не работает больше, он делает сообщение каждый раз и возвращает сообщение об ошибке из сервер. Я думаю, что плагин проверки не работает с JQuery 1.6

У меня есть приложение MVC 3, которое использует диалоговое окно JQuery UI (загруженное из частичного представления, которое содержит форму), чтобы отправить информацию на ajax на сервер. Я хочу инициировать проверку моей формы на стороне клиента, прежде чем я сделаю сообщение ajax. В Firefox и IE9 отлично работает, в IE7 и IE8 form.validate() всегда возвращает true.

Вот код js, прикрепленный к моей кнопке отправки:

    var wizard = $("#wizard"); //div that holds the modal dialog
    var myform = $("#wizard form");

    var submitFunction = function (e) {
        e.preventDefault(); //no postback
        myform.validate();
        if (myform.valid()) {
            $(this).attr("disabled", "disabled");
            submited = true;
            $.post(
                "SuperAdmin/CreateEditController",
                $(this).serialize(),
                function (data) {
                    if (data.Success) {
                        wizard.dialog('destroy');
                    }
                    else {
                        wizard.html(data.Html);
                    }
                },
                "json"
            ); //end json post
        }
    };
myform.submit(submitFunction);

Я использую следующее:

<script src="@Url.Content("~/Scripts/jquery-1.6.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

Плагин JQuery Validation был обновлен с помощью NuGet версии 1.8.0 и библиотеки JQuery до версии 1.6.

Обновление: Я протестировал код, созданный с помощью шаблона по умолчанию для лесов, и он делает то же самое, без проверки на стороне клиента. Возможно, JQuery 1.6 не совместим с шаблоном леса Razor??

4b9b3361

Ответ 2

У меня были проблемы с jquery.validate.js в IE7/IE8. После отладки я заметил, что следующая строка вызывала проблему (ln 436 в версии 1.7):

return $([]).add(this.currentForm.elements)
            .filter(":input")

Замените эти две строки чем-то вроде:

return $(':input', this.currentForm)

Это помогло мне.

Ответ 3

Попробуйте переключиться на неминифицированную версию:

Минимальная версия jQuery 1.6, похоже, не работает корректно в IE7, режиме совместимости IE8 и режиме совместимости IE9. Переход на не-miinified работал у меня.

http://bugs.jquery.com/ticket/9365

Удачи!

Ответ 4

Вместо этого:

if (myform.valid()) 

сделайте следующее:

if (myform.validate().form()) 

Надеюсь, это поможет. Приветствия

Ответ 5

В IE7,8 есть некоторые ошибки в attr(), которые, надеюсь, будут исправлены в следующей версии.

Возможно, команда jQuery сделала правильную вещь при изменении attr(), но изменения действительно испортили работу.

И это определенно означает остановку показа для обновления.

Ответ 6

Он тоже не работает на IE9. Возвращаясь к jQuery-1.5.1, я решил проблему. Вы можете запустить команду NuGet "Install-Package jQuery -version 1.5.1" для отката.

Ответ 7

У меня была аналогичная ситуация, когда каждая проверка достоверна в IE8, когда я использовал JQuery 1.6.2, JQuery.Validate 1.8 и Jquery.Validate.Unobtrusive; но он работает в FireFox

В настоящее время я создаю сайт, на котором люди могут входить с любой страницы. Мой дизайн заключается в том, что родительская страница использует JQuery.Load(url) для загрузки моей дочерней страницы (входа) в JQuery Dialog. Моя родительская страница не содержит диалогового окна JQuery; дочерняя страница (логин) содержит диалог. Поскольку дочерняя страница является частичной страницей, она не включает в себя всю плиту котла HTML

Пример html, отсутствующий на моей дочерней странице:

<html>
   <title></title>
   <body>
   </body>
</html>

Я пришел, чтобы выяснить, не проверяя дочернюю страницу (логин) независимо от родительской страницы, что у IE возникают проблемы с JQuery Dialog и JQuery Validation, когда нет элемента body.

Я создал пример jsFiddle (см. ссылку ниже). Если вы проверите этот пример в IE 8, проверка не будет работать, но если вы проверите его в FireFox, то проверка правильности работы. В примере jsFiddle я включил элемент body, но IE8 все еще имеет проблемы. Когда я рассматриваю источник jsFiddler, я не могу найти никаких элементов тела и считаю, что это способствует проблеме в jsFiddler. Если я запустил код на моем компьютере, и элемент body включен, IE8 и версия Firefox будут работать. Если я удаляю элемент body, IE8 не работает и FireFox работает.

http://jsfiddle.net/BarDev/aRj64/

Ответ 8

Не лучшее решение, однако, добавление следующего метатега в раздел заголовка страницы поможет отключить режим совместимости:
< meta http-equiv =" X-UA-Compatible "content =" IE = edge " >

Ответ 9

Убедитесь, что плагин jQuery-Validate также обновлен. Вы должны использовать версию 1.8.0. 1 для jQuery-Validate. Имя пакета NuGet - jQuery.Validation.

Ответ 10

У меня была такая же проблема с использованием 1.6.

Обновлен jquery.validate до последнего, и это не имело значения.

Обновлен jquery до 1.7, и он исправил его.

Ответ 11

Я попробовал много ответов здесь без успеха. В конце концов, я обнаружил, что мне нужно обновить библиотеку jquery.validate до версии 1.9. Я знаю, что я искал это раньше, но не смог найти его, поэтому я написал это небольшое сообщение в блоге о том, как найти последнюю версию и исправить эту проблему:

Проверка JQuery не wokring в ie7 и ie 8